我有一个TableViewController,它是一个NSFetchedResultsControllerDelegate
。该表显示的数据正在另一个上下文中更新(通过RestKit),并在收到通知时合并。在这一点上,如果我要在主线程的ManagedObjectContext
上运行查询,我会看到另一个线程更新的数据。
当上下文合并发生时,作为NSFetchedResultsControllerDelegate
的TableViewController甚至会获得controller:didChangeObject:atIndexPath:forChangeType:newIndexPath
消息。我遇到的问题是对象(didChangeObject)仍然具有旧数据。我想是这样,因为调用此消息的任何人都只是使用当前的NSFetchResultsController
给我该对象。
为什么NSFetchResultsController
的fetchObjects没有从上下文合并中更新?是否可以通过上下文合并来更新fetchObjects并再次执行此fetch?
最佳答案
答案是,来自更改的合并将NSManagedObject的数据标记为错误的,因为它是过时的。默认情况下,陈旧时间间隔显然设置为无限。我会归功于我在哪里找到此信息,但是现在找不到。无论如何,像这样设置NSManageObjectContext允许该上下文立即查看更新的信息。
[__managedObjectContext setStalenessInterval:0];
关于ios - NSFetchedResultsControllerDelegate在合并来自另一个上下文的更改后更新表单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9560056/