ios – 如何从Core Data中的持久存储中删除所有对象?

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

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...