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

前端之家收集整理的这篇文章主要介绍了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 !

猜你在找的iOS相关文章