2010-02-02 72 views
1

設置:一個NSFetchedResultsController vs幾個UITableViews - 只有一個UITableView獲取更新?

我有幾個UITableViewControllers(tvc),所有實例化一個單獨的NSFetchedResultsController(frc)。所有這些frc-s使用相同的ManagedObjectContext(moc)。

場景:

有時候,從TVC-S的一個,我推出一些後臺進程更新數據。後臺進程更新單獨線程中的數據,最後在主線程上調用[moc mergeChangesFromContextDidSaveNotification:]。這些更改應該傳播給frc,並且應該調用[frcDelegate controllerDidChangeContent:]。這工作正常......但只適用於frcDelegate,其關聯的tvc啓動了更新。 (所有的TVC-S將擔任frcDelegate他們FRC)

預期的行爲:

,因爲所有的FRC-S被綁定到同商務部,所有的FRC-S應該拿起的變化,應該爲它們全部調用[frcDelegate controllerDidChangeContent:]。

實際行爲:

只有一個[frcDelegate controllerDidChangeContent:]被調用。

爲什麼我看到的實際行爲,而不是預期?我應該如何調試?或者這是正確的行爲?

+0

FRC的只有觀察了在他們的獲取請求指定的實體的變化。你是否正在修改其他frc在這些更新中觀察到的實體? – gerry3 2010-02-02 10:08:03

+0

你應該提交這個答案,因爲這就是它。 (應三思而行早上5點,然後再發布...)的剛收到的對象都是相同的實體,但FRC-S有不同的謂詞和新的對象只有一個特定的FRC的謂詞匹配。我應該在保存之前通過向對象添加更多信息來解決此問題,以便它匹配我希望匹配的frc-s的謂詞。 – Jaanus 2010-02-02 10:17:04

回答

1

這是預期的行爲。

每個讀取的結果,控制器將僅觀察了在其取請求中指定的實體的變化。據推測,您只是修改與啓動更新的控制器相對應的實體的對象。