【问题标题】:Core Data - removing items核心数据 - 删除项目
【发布时间】:2012-07-17 01:41:45
【问题描述】:

由于对我的一些代码有一些疑问,我有一个问题。在 NSManagedObject 数组中,我需要摆脱其中的一些。 这是(下面)我使用的代码。我不得不说它在我的经验范围内有效。所以我的问题更多是确保我没有做错什么,而不是解决现有问题

for (NSManagedObject *item in objects) {
    if ([[item valueForKey:@"OK"] intValue]>1) {
        [context deleteObject:item];
        continue;
    }
}

由于我在循环时修改数组“对象”的内容,我担心我的代码有点不安全。 当然,这一切都取决于幕后如何处理,我不知道。

谢谢。

【问题讨论】:

    标签: core-data ios4 iphone-sdk-3.0


    【解决方案1】:

    当您调用deleteObject: 时,您是在标记要删除的对象,而不是立即删除它,当然也不会从您在迭代期间迭代的集合中删除它。

    来自文档:

    指定在提交更改时应从其持久存储中删除的对象。

    如果您在调用deleteObject: 之后检查已删除的项目,您将看到这些对象仍然存在,但它们的isDeleted 标志设置为YES。当下次保存NSManagedObjectContext 时,该对象实际上将被删除。

    【讨论】:

      【解决方案2】:

      您只是用deleteObject 行标记要删除的项目。为了强制上下文执行删除,请在函数底部运行:

      NSError *error;
      if (![context save:&error]) {
          return;
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-03-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-12
        • 1970-01-01
        相关资源
        最近更新 更多