2011-02-02 80 views
0

如果NSFetchedResultsControllerDelegate正在處理更新(例如刪除項目) 並且用戶同時滾動UITableView。NSFetchedResultsController在滾動時更新

如果UITableView需要訪問正被刪除的提取請求項,會發生什麼情況? 我應該在cellForRowAtIndexPath中測試它,以及如何?

還是不可能發生?

+0

做了一些測試後,似乎有必要鎖定NSFetchedResultsController的NSManagedObjectContext,因此我們確信在cellForRowAtIndexPath正在讀取它時沒有更新它。任何人都可以證實? – CodeFlakes 2011-02-02 15:12:01

回答

2

這不是問題。核心數據和表格視圖處理這個。

只要確保在插入和/或刪除託管對象後更新了表格視圖。

最簡單的方法是將表格視圖reloadData放在NSFetchedResultsControllerDelegate方法controllerDidChangeContent:中。

要做更有創意的東西,比如在表格中放入或放出動畫行,請查看NSFetchedResultsControllerDelegate Protocol Reference的典型使用部分中的鍋爐板代碼。

+0

雖然使用`reloadData`將會起作用,因此將它與'NSFetchedResultsController`一起使用會有點反效果,因爲它會導致所有單元重新加載。這是一項昂貴的操作,尤其是當您的表格可能長達數百個單元格時(如聊天對話)。 – alexgophermix 2015-01-22 00:59:47