何时以及多久调用processPendingChanges以确保图形完整性

时间:2011-04-18 21:49:42

标签: core-data nsfetchedresultscontroller nsmanagedobjectcontext

我有一些由Core Data管理的实体,并且有几种情况,我在一个方法中设置一些属性值,这些属性值将导致Core Data强制执行的图形更改并执行(逻辑上)依赖于uptodate状态的其他操作对于图表。

是否有任何理由在每次设置关系后都不调用processPendingChanges,以确保图表始终完全处于正常状态?当我这样做时,一切都正常工作,但是,显然,它有点“嘈杂”,并打破了一些原本会被通知的处理(例如,最终发送大量controllerWillChangeContent / {的获取结果控制器{1}}当他们发生其他情况时他们的分娩。)

此外:

从任何更改实体的方法返回后,图表是否始终是最新的?

2 个答案:

答案 0 :(得分:4)

我发现在检查NSManagedObjectContext的deletedObjects之前应该调用processPendingChanges很难。至少如果某些关系将deleteRule设置为NSCascadeDeleteRule。

如果您不调用processPendingChanges,则deletedObjects可能不包含将在当前事件结束时通过级联删除的对象。

答案 1 :(得分:2)

processPendingChanges最常用于iOS上,在单独的线程上运行多个上下文。它在MacOS下扮演着更大,更常见的角色。

在大多数情况下,您通常不必在iOS下调用它。这样做并没有真正给你带来太大的好处,如果你有一个复杂的图形,它会在主线程上执行时导致UI滞后。

除非测试显示您因某种原因失去了图形完整性,否则我不会理会它。