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

标签 ios core-data concurrency nsfetchedresultscontroller restkit

我有一个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/

相关文章:

java - 如何同时启动两个进程然后等待两个进程完成?

ios - UINavigationBar 在 Action Extension 中的旋转高度错误

ios - 如何使用 Swift 更新 CoreData 数据

ios - 如果我没有完整的数据集,处理核心数据关系的最佳做法是什么?

swift - 核心数据导致 iPhone 崩溃

postgresql - 在 PL/pgSQL 函数中检测到死锁

ios - SKView!提交时发现为零

ios - 如何用原生键盘替换 UIPickerView?

ios - collectionView 中每个单元格的 NSFetchedResultsController

google-app-engine - GAE Golang 实现一些独特的请求队列?