小编典典

删除/重置 Core Data 中的所有条目?

all

你知道有什么方法可以删除存储在 Core Data 中的所有条目吗?我的架构应该保持不变;我只想将其重置为空白。


编辑

我希望以编程方式执行此操作,以便用户基本上可以点击reset按钮。


阅读 78

收藏
2022-05-26

共1个答案

小编典典

您仍然可以使用 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 中引入外部二进制存储(allowsExternalBinaryDataStorage 或 Store in
External Record File),仅仅删除 storeURLs
指向的文件是不够的。您将留下外部记录文件。由于这些外部记录文件的命名方案是不公开的,所以我还没有一个通用的解决方案。2012-05-08 23:00

2022-05-26