NSManagedObjectContextObjectsDidChangeNotification已删除对象问题

时间:2013-05-13 23:57:25

标签: core-data nsmanagedobjectcontext

好像我暴露了一个奇怪的问题,即删除的对象实际上并没有被删除。这只发生在我回复theNSManagedObjectContextObjectsDidChangeNotification时。

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

当我在通知处理程序的顶部调用[context processPendingChanges];时,当我删除最后一个对象时,问题似乎只出现 。否则,A的实例往往会留下来。

所以,似乎问题的根源在于我对Core Data不了解的东西。弄清楚为什么没有效果。任何人都可以列出我可能会看到这种行为的原因吗?

1 个答案:

答案 0 :(得分:0)

我发现了两个可能发生这种情况的原因:

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

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