我是coredata的新手。即便如此,我已经设法在一定程度上理解它并且一切正常。我唯一无法做的就是删除整个数据库。
我该怎么做?
我在ViewController上,数据库由委托初始化。我的项目基于Apple模板。
如果数据库是由委托创建的,如何擦除数据库并将其重新创建为空?
请不要指我这个“答案” Delete/Reset all entries in Core Data?
因为它不完整而且没有涵盖我如何重新创建整个事物。它只是介绍了如何删除内容。
感谢
答案 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;