如何删除 Core Data 存储中除一个对象之外的所有对象?

Posted

技术标签:

【中文标题】如何删除 Core Data 存储中除一个对象之外的所有对象?【英文标题】:How can I delete all but one object in a Core Data store? 【发布时间】:2012-06-06 15:52:03 【问题描述】:

是否有一种有效的方法可以删除 Core Data 存储中除一个或几个对象之外的所有对象?我们当前的解决方案是删除整个存储(使用RKObjectStore.deletePersistantStore——我们使用RestKit)并重建对象,但这不是最佳的,因为它涉及额外的服务器请求。理想情况下,会有一些不错的方法将对象从存储中“分离”,转储存储,然后重新插入。

谢谢!

【问题讨论】:

能不能先把对象保存到别处,然后正常dump store? @ApopheniaOverload 这是一个选项。将objectStore 上的objectStore 属性设置为RKObjectManager 指向新的对象存储是否符合规定?或者这会破坏事情吗? 只有一个对象 - 你不想删除 - 听起来你可以从核心数据中删除它并在 userDefaults 中使用它。 【参考方案1】:

你可以先获取对象的数量,然后再少取一个:

NSInteger count = [self.managedObjectContext countForFetchRequest:fetchRequest error:nil];
fetchRequest.fetchLimit = count-1;

执行获取,遍历结果并删除它们。

您还可以通过使用 sqlite 框架向存储文件发送vacuum 查询来减小数据库大小,但如果它再次被填满,这并不是必需的。

【讨论】:

以上是关于如何删除 Core Data 存储中除一个对象之外的所有对象?的主要内容,如果未能解决你的问题,请参考以下文章

如何删除 Firebase 节点中除最近的 X 子节点之外的所有子节点?

Jquery 删除一个下拉菜单中除第一个option之外的所有option

删除 MySQL 中除 One 之外的所有重复行? [复制]

删除 VIM 中除第一列之外的所有内容

用于删除目录中除指定列表之外的所有文件夹的批处理文件

从内存存储中删除 Core Data 对象会将它们变成故障,但不会擦除它们