ios - 删除/重置核心数据中的所有条目?

标签 ios cocoa cocoa-touch core-data nsmanagedobject

你知道有什么方法可以删除存储在 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/

相关文章:

cocoa - ccl 和 *.nib 文件

regex - 你怎么用NSRegularExpression的replacementStringForResult :inString:offset:template:

ios - 如何通过 google maps iOS API 对地址进行地理编码?

iphone - 安全地向服务器验证 iPhone 应用程序?

ios - 整个 ios 应用程序的放大 UI

objective-c - 如何在 UIMarkupTextPrintFormatter 中添加图片?

ios - 访问另一个类中定义的枚举值

ios - MDM 配置文件无法安装

swift - NSScanner 扫描Double UnsafeMutablePointer

objective-c - 初始化 NSString 时的 EXC_BAD_ACCESS