我的核心数据在我的应用程序中工作.所以,我获取一个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 !