2012-03-17 64 views
2

我有一個NSFetchedResultsController在表格視圖中顯示「地點」,但是當我更新應該在另一個視圖控制器中顯示的地點集合時,我的FRC不會更新表格視圖。當我添加NSPredicate時,爲什麼我的NSFetchedResultsController委託會停止觸發?

這是一般問題。我的具體情況似乎圍繞着支持我的FRC的NSPredicate,因爲當我刪除NSPredicate(並且僅獲得所有位置)時,一切正常。

我的查詢是

@"ANY photos.isFavorite == %@", [NSNumber numberWithBool:YES] 

地方照片(我通過CS193P工作)一個一對多的關係。也許我的FRC沒有設置觀察相關表格或其他內容的變化?

的我的情況附加信息的位:

回答

3

我不知道這是你的情況,但我會發布無論如何。也許這可能是一個有效的解決方法。

NSFetchedResultsController pitfall

希望它能幫助。

+1

是的,就是這樣。對於記錄來說,FRC不會在除了它要獲取的類型之外的實體上找到更改。解決方法是手動「骯髒」相關的實體(在我的情況下,相關的*地點*),所以FRC將看到變化。非常感謝你! – ladenedge 2012-03-17 17:09:09

+0

不客氣。 – 2012-03-17 17:12:28

0
  • 你嘗試使用,而不是照片上的照片一比一的關係測試一個簡單的謂詞,例如?

  • 「我的FRC不更新表格視圖」 - 您是否使用-controllerDidChangeContent:?你確認它沒有被調用嗎?我已經看到,與文檔相反,在該方法內的tableView上調用reloadData是不安全的,因爲該方法可能在輔助線程而不是主線程上調用。

  • 您是否在同一(主?)線程上執行與MOC相關的所有操作?

+0

一個更簡單的謂詞確實有效。當我完全省略謂詞或者使用嚴格處理* places *的謂詞(而不是提示加入* photos *)時,表視圖按照我的預期進行更新。 (回答你的其他兩個問題:是的。) – ladenedge 2012-03-17 15:10:20

0

請嘗試使用此謂詞嗎?

@"%@ IN photos.isFavorite", [NSNumber numberWithBool:YES] 
+0

沒有工作。 :-(與我的初始查詢行爲相同) – ladenedge 2012-03-17 15:25:59

相關問題