2

似乎我已经暴露了一个奇怪的问题,即我删除的对象实际上并没有被删除。这仅在我响应时发生theNSManagedObjectContextObjectsDidChangeNotification

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

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

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

4

1 回答 1

0

我发现这可能发生的两个原因:

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

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

于 2013-05-15T18:51:06.607 回答