2011-06-26 55 views
1

我指的是以下问题:Delete/Reset all entries in Core Data?清理出核心数据

有时在启动时,我想清楚了我的核心 - 数据的数据库,并重新下载一遍。我刚开始使用Core Data,因此我是Core Data的初学者。

1)的答案显示:

NSPersistentStore *store = ...; 

我该如何获得NSPersistentStore?我的应用程序委托不引用NSPersistentStore,只引用NSStorePersistentCoordinator。

2)我应该重建堆栈后,我运行以下(在答案)?

NSPersistentStore *store = ...; 
NSError *error; 
NSURL *storeURL = store.URL; 
NSPersistentStoreCoordinator *storeCoordinator = ...; 
[storeCoordinator removePersistentStore:store error:&error]; 
[[NSFileManager defaultManager] removeItemAtPath:storeURL.path error:&error]; 

如果是这样,我该如何重建堆栈?我可以只调用一个函数来做到这一点吗?

感谢,

回答

1

为什么要使用NSPersistentStore?只是因为那个职位?如果是,那么我建议你去使用NSManagedObject。您可以简单地通过获取请求删除所有核心数据,然后在其上创建for循环。它的古老风格,但对初学者来说很容易理解。这可能会帮助你:

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; 
NSEntityDescription *entity = 
[NSEntityDescription entityForName:entityDescription inManagedObjectContext:managedObjectContext]; 

[fetchRequest setEntity:entity]; 

NSError *error; 
NSArray *items = [managedObjectContext executeFetchRequest:fetchRequest error:&error]; 
[fetchRequest release]; 


for (NSManagedObject *managedObject in items) { 
    [managedObjectContext deleteObject:managedObject]; 

} 
if (![managedObjectContext save:&error]) { 

} 

快乐编码..!