当合并到NSManagedObjectContext更改现有对象时,NSFetchedResultsController中的数据不会更新

时间:2011-06-30 09:32:54

标签: cocoa core-data nsfetchedresultscontroller nsmanagedobjectcontext

我们有:

  • 2个帖子;
  • 每个帖子都有NSManagedObjectContext;
  • 每个帖子都有NSFetchedResultsController;
  • NSFetchedResultsControllers的代表不为空;
  • 主线程NSFetchedResultsController用于处理表格;
  • 在辅助线程中NSFetchedResultsController仅用于数据访问。

如果添加了新对象,则更改将与第二个线程NSManagedObjectContext的内容合并。

如果添加了对象,则NSFetchedResultsController将根据请求更新数据。 如果修改了现有对象的属性,则NSFetchedResultsController不会更新数据。

为什么会这样?

2 个答案:

答案 0 :(得分:0)

您的更新代码路径是否与插入代码路径分开?如果是这样,您是否确认更新代码路径正在保存对上下文的更改?

答案 1 :(得分:0)

最可能的原因是您没有实现FRC委托方法:

– controller:didChangeObject:atIndexPath:forChangeType:newIndexPath: 

......正确。具体而言,您需要检查更改类型NSFetchedResultsChangeUpdate,然后使用更改的值更新该特定对象的表行单元格。