不确定这是否是 Magical Record 保存方式的问题,或者我只是在某个地方犯了一个菜鸟错误。
我正在使用 NSFetchedResultController (FRC) 和 UITableView 来显示实体列表,当用户点击“添加”带有编辑器的新视图控制器时,会使用[MyEntity MR_createEntity]
. 用户可以在此处添加通过关系添加到主实体的其他实体。当用户在此视图控制器中点击“保存”时,上下文将使用[[NSManagedObjectContext MR_contextForCurrentThread] MR_save]
NSFetchedResultsController 似乎更新了,但是当我点击编辑实体时,没有任何子实体存在。调试似乎表明,即使实体已被保存,FRC 仍然具有具有其临时 ID 的实体。
我[self.tableView reloadData]
在 FRCcontrollerDidChangeContent
委托方法中做得很幼稚。
重新启动应用程序会加载正确的实体,并且子实体会在编辑器视图控制器中正确显示。
看起来 FRC 响应了“主线程”保存事件,但保存实际上是在后台线程上发生的,因此 FRC 看不到它。我已经检查过,所有“我的”操作(设置 FRC、创建和获取实体)都发生在主线程上下文中。
我尝试在 MR_rootSavingContext 上侦听更改通知,并将它们与主线程上下文合并,这有点工作,但我最终在 FRC 中得到了重复的行(一个是正确的“永久”实体,一个是临时实体)。