NSManagedObjectContextObjectsDidChangeNotification被删除的对象问题

问题描述:

看起来好像我已经暴露了一个奇怪的问题,其中我的被删除的对象实际上并没有被删除。这只发生在我回应theNSManagedObjectContextObjectsDidChangeNotification时。NSManagedObjectContextObjectsDidChangeNotification被删除的对象问题

更具体地说:我有一个A <的列表 - >> B。级联删除B的'拥有'实例。
当我删除A的一个实例时,它'拥有'B实例被删除,但A实例未被删除。

当我在我的通知处理程序的顶部调用[context processPendingChanges];时,问题似乎是只有发生在删除最后一个对象时。否则,A的情况往往会继续存在。

所以,这个问题的根源似乎是我不了解Core Data的问题。搞清楚为什么没有生产力。任何人都可以列出我可能会看到这种行为的原因吗?

我发现有两个原因会发生这种情况:

A)在我的情况,我的第一个策略是建立删除管理对象的临时图形作为一个组织的方便。您必须修改临时受管对象上下文中的已删除对象,否则您对已删除对象所做的任何更改将取代删除。一旦完成对(陈旧的)删除的管理对象的操作,请立即重置临时上下文。 B)删除时,对象的引用计数必须为0。这意味着它们必须在删除之前从所有获取的结果控制器,NSArrays等中释放。

满足A和B解决了这个问题。