设定:
我有几个UITableViewControllers(tvc),它们都实例化一个单独的NSFetchedResultsController(frc)。但是,所有这些frc-s都使用相同的ManagedObjectContext(moc)。
情景:
有时,从tvc-s之一,我启动一些后台进程来更新数据。后台进程在单独的线程中更新数据,最后在主线程上调用[moc mergeChangesFromContextDidSaveNotification:]。然后应将这些更改传播到frc,并应调用[frcDelegate controllerDidChangeContent:]。这工作正常......但仅适用于其关联的tvc启动更新的frcDelegate。 (所有的tvc都代表他们的frc担任frcDelegate。)
预期行为:
由于所有frc-s都绑定到同一个moc,所以所有frc-s都应该接收更改,并且应该为所有这些更改调用[frcDelegate controllerDidChangeContent:]。
实际行为:
只有一个[frcDelegate controllerDidChangeContent:]被调用。
为什么我看到实际行为而不是预期?我该怎么调试呢?或者这是正确的行为吗?
答案 0 :(得分:1)
这是预期的行为。
每个获取的结果控制器仅观察其获取请求中指定的实体中的更改。据推测,您只修改与启动更新的控制器对应的实体对象。