如何删除 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