iphone - 擦除核心数据对象上的所有数据

时间:2010-12-13 09:45:53

标签: iphone

我是coredata的新手。即便如此,我已经设法在一定程度上理解它并且一切正常。我唯一无法做的就是删除整个数据库。

我该怎么做?

我在ViewController上,数据库由委托初始化。我的项目基于Apple模板。

如果数据库是由委托创建的,如何擦除数据库并将其重新创建为空?

请不要指我这个“答案” Delete/Reset all entries in Core Data?

因为它不完整而且没有涵盖我如何重新创建整个事物。它只是介绍了如何删除内容。

感谢

2 个答案:

答案 0 :(得分:2)

我不确定为什么这个答案对你来说还不够。但是如果你删除这样的商店:`NSArray * stores = [persistentStoreCoordinator persistentStores];

for(NSPersistentStore *store in stores) {
    [persistentStoreCoordinator removePersistentStore:store error:nil];
    [[NSFileManager defaultManager] removeItemAtPath:store.URL.path error:nil];

    NSError *error = nil;
    [persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:store.URL options:nil error:&error];
}

您可以将商店设置回来,就像我在最后一行中所做的那样:

[persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:store.URL options:nil error:&error];

答案 1 :(得分:0)

要删除商店,您可以尝试以下方式:

NSString *docDirPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
NSString *storePath = [docDirPath stringByAppendingPathComponent:@"YourDatabaseName.sqlite"];
NSFileManager *fileManager = [NSFileManager defaultManager];
if ([fileManager fileExistsAtPath:storePath]) {
[fileManager removeItemAtPath:storePath error:NULL];

并确保将persistentStoreCoordinator设置为nil,因此当再次访问它时,它将重新初始化数据库,就像您第一次运行该应用程序一样。

self.persistentStoreCoordinator = nil;