我的核心数据在我的应用程序中工作.所以,我获取一个XML文件,将数据解析成模型对象并将其插入到核心数据中.它们被保存在持久存储中,当我重新启动应用程序时,我可以访问它们.但是,我想能够随意刷新持久存储中的数据,所以我需要先从存储中删除现有的对象.这是否有直接的方法?
谢谢
我发现这个解决方案:
[managedObjectContext lock]; [managedObjectContext reset];//to drop pending changes if ([persistentStoreCoordinator removePersistentStore:persistentStore error:&error]) { NSURL* storeURL = [NSURL fileURLWithPath:[self pathForPersistentStore]]; [[NSFileManager defaultManager] removeFileAtPath:[storeURL path] handler:nil]; [self addPersistentStore];//recreates the persistent store } [managedObjectContext unlock];
解决方法
这是我完成清理我的核心数据.它工作完美.这是如果你只有一个持久性存储,这可能是这样的情况,如果你没有再手动添加一个.如果您的managedObjectContext具有与此相同的名称,您可以简单地复制/过去它将会工作.
NSError * error; // retrieve the store URL NSURL * storeURL = [[managedObjectContext persistentStoreCoordinator] URLForPersistentStore:[[[managedObjectContext persistentStoreCoordinator] persistentStores] lastObject]]; // lock the current context [managedObjectContext lock]; [managedObjectContext reset];//to drop pending changes //delete the store from the current managedObjectContext if ([[managedObjectContext persistentStoreCoordinator] removePersistentStore:[[[managedObjectContext persistentStoreCoordinator] persistentStores] lastObject] error:&error]) { // remove the file containing the data [[NSFileManager defaultManager] removeItemAtURL:storeURL error:&error]; //recreate the store like in the appDelegate method [[managedObjectContext persistentStoreCoordinator] addPersistentStoreWithType:NSsqliteStoreType configuration:nil URL:storeURL options:nil error:&error];//recreates the persistent store } [managedObjectContext unlock]; //that's it !