你知道有什么方法可以删除存储在 Core Data 中的所有条目吗?我的模式应该保持不变;我只想将其重置为空白。
编辑
我希望以编程方式执行此操作,以便用户基本上可以点击 reset
按钮。
最佳答案
您仍然可以使用 NSFileManager:removeItemAtPath::方法以编程方式删除文件。
NSPersistentStore *store = ...;
NSError *error;
NSURL *storeURL = store.URL;
NSPersistentStoreCoordinator *storeCoordinator = ...;
[storeCoordinator removePersistentStore:store error:&error];
[[NSFileManager defaultManager] removeItemAtPath:storeURL.path error:&error];
然后,只需重新添加持久存储以确保正确重新创建它。
迭代每个实体的编程方式既慢又容易出错。这样做的用途是如果你想删除一些实体而不是其他实体。但是,您仍然需要确保保持参照完整性,否则您将无法保留您的更改。
只需删除商店并重新创建它既快速又安全,而且当然可以在运行时以编程方式完成。
iOS5+ 更新
随着 iOS 5 和 OS X 10.7 引入外部二进制存储(允许 ExternalBinaryDataStorage 或 Store in External Record File),仅删除 storeURLs 指向的文件是不够的。您将留下外部记录文件。由于这些外部记录文件的命名方案是不公开的,所以我还没有一个通用的解决方案。 – an0 2012 年 5 月 8 日 23:00
关于ios - 删除/重置核心数据中的所有条目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1077810/