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

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

谢谢!

【问题讨论】:

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

标签: iphone objective-c core-data restkit


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 2011-01-23
    • 1970-01-01
    • 2011-09-05
    • 1970-01-01
    • 2022-07-27
    • 2023-04-04
    • 2016-03-30
    相关资源
    最近更新 更多