【问题标题】:NSManagedObject delete not working properlyNSManagedObject 删除无法正常工作
【发布时间】:2012-09-27 14:36:09
【问题描述】:

我正在使用语句删除一个 NSManagedObject

[managedObjectContext deleteObject:obj];

然后将更改存储到该持久存储中。当我尝试使用一些数据库查看器查看我的实际表时,我可以看到该对象仍然存在于表中。我很困惑,我在删除后进行了刷新调用,如下所示(就在保存到持久存储之前)。

[managedObjectContext refreshObject:obj mergeChanges:YES];

当我现在尝试查看表格时,我看不到对象。它现在可以工作了,但我很困惑,原因有两个。

1:我正在删除许多其他地方的许多对象,并没有在每个地方都进行刷新,尽管我正在保存到持久存储中。

2:我不明白刷新已删除对象的概念。

谁能帮帮我?提前致谢!

【问题讨论】:

    标签: ios macos cocoa core-data nsmanagedobject


    【解决方案1】:

    如果没有更多的上下文就不容易回答。

    也就是说,如果您删除了一个托管对象,那么 fetchedResultsController 将不会被更新,除非它们是在同一个 managedobjectContext 上创建的。换句话说,如果从两个不同的托管上下文发出两个数据库提取,则数据库状态的视图将不同步。

    我建议您检查一下是否是这种情况。

    此外,您不必执行刷新 - 除非在非常特殊的情况下 - NSFetchresultController 会收到有关数据库更改的通知,前提是您实现了 NSFetchedResultsControllerDelegate 协议。

    【讨论】:

      猜你喜欢
      • 2011-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多