2010-12-13 17 views
2

我是coredata的新手。尽管如此,我已经在一定程度上理解了它,并且一切正常。我唯一不能做的就是抹掉整个数据库。iphone - 擦除coredata对象上的所有数据

我该怎么做?

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

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

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

避免,因为它是不完整的,不涉及我如何重建整个事情。它只是介绍如何删除东西。

感谢

+0

只是可以肯定:你问你如何删除所有对象,之后重新创建它们?既然你说“不包括我如何重现整个事情”。 – 2010-12-13 09:48:57

回答

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]; 
+0

谢谢!而已!!! – SpaceDog 2010-12-13 10:15:44

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到零,所以当它被再次访问,它会重新初始化数据库如果您是第一次运行该应用程序。

self.persistentStoreCoordinator = nil; 
+0

谢谢。我做到了,数据库仍然存在。该文件已删除,但数据在那里。之后我做了一个简单的数据检查,我可以列出所有值到终端。有些东西仍然持有它或没有刷新。 Zebulon的回答做到了。不管怎么说,还是要谢谢你。 – SpaceDog 2010-12-13 10:15:28