一个NSFetchedResultsController与几个UITableViews - 只有一个UITableView获取更新?

时间:2010-02-02 10:01:50

标签: iphone core-data nsfetchedresultscontroller

设定:

我有几个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:]被调用。

为什么我看到实际行为而不是预期?我该怎么调试呢?或者这是正确的行为吗?

1 个答案:

答案 0 :(得分:1)

这是预期的行为。

每个获取的结果控制器仅观察其获取请求中指定的实体中的更改。据推测,您只修改与启动更新的控制器对应的实体对象。