NSFetchedResultsControllerDelegate在合并来自另一个上下文的更改后更新表单元格

时间:2012-03-04 23:56:17

标签: ios core-data concurrency nsfetchedresultscontroller restkit

我有一个NSFetchedResultsControllerDelegate的TableViewController。此表显示的数据将在另一个上下文(RestKit)中更新,并在收到通知后合并。此时,如果我在主线程的ManagedObjectContext上运行查询,我会看到另一个线程更新的数据。

当上下文合并发生时,TableViewController(NSFetchedResultsControllerDelegate)甚至会收到controller:didChangeObject:atIndexPath:forChangeType:newIndexPath消息。我遇到的问题是对象(didChangeObject)仍然具有旧数据。我想是这样的,因为无论是什么调用此消息只是使用当前NSFetchResultsController给我这个对象。

为什么NSFetchResultsController的fetchObjects不会从上下文合并中更新?有没有办法让上下文合并更新fetchObjects并再次执行此获取?

1 个答案:

答案 0 :(得分:4)

答案是来自更改的合并将NSManagedObject的数据标记为错误,因为它已过时。默认情况下,过期间隔设置为无限。我会赞赏我在哪里找到这些信息,但我现在找不到它。无论如何,像这样设置NSManageObjectContext允许该上下文立即查看更新的信息。

[__managedObjectContext setStalenessInterval:0];