小编Mar*_*cin的帖子

魔法记录,保存和NSFetchedResultsController

不确定这是魔术记录保存方式的问题,还是我只是在某个地方犯了一个菜鸟错误.

我正在使用NSFetchedResultController(FRC)和UITableView来显示实体列表,当用户点击"添加"新的视图控制器时,推送编辑器,创建一个新的实体[MyEntity MR_createEntity].用户可以在此添加通过关系添加到主实体的其他实体.当用户点击此视图控制器中的"保存"时,将使用保存上下文[[NSManagedObjectContext MR_contextForCurrentThread] MR_save]

NSFetchedResultsController似乎更新,但是当我点击编辑实体时,没有任何子实体存在.调试似乎表明即使实体已被保存,FRC仍然具有带有临时ID的实体.

[self.tableView reloadData]在FRC controllerDidChangeContent委托方法中做得很天真.

重新启动应用程序将加载正确的实体,并在编辑器视图控制器中正确显示子实体.

看起来FRC响应"主线程"保存事件,但保存实际上发生在后台线程上,因此FRC看不到它.我检查了所有"我的"操作(设置FRC,创建和获取实体)都发生在主线程上下文中.

我尝试在MR_rootSavingContext上侦听更改通知并将它们与主线程上下文合并,这种方式有效但我最终在FRC中有重复行(一个是正确的"永久"实体,一个是临时实体).

core-data objective-c nsfetchedresultscontroller magicalrecord

8
推荐指数
1
解决办法
5760
查看次数