2017-06-04 55 views
0

我是新的iOS(Swift),並試圖理解NSFetchedResultsControllerDelegate機制。 我特別不明白的是如何識別NSFetchedResultsChangeType。什麼調用插入/刪除/更新等操作? 何時調用「func controller(...)」函數? 我無法從Apple的文檔中找到它。 請說明一下。NSFetchedResultsControllerDelegate如何工作?

回答

2

NSFetchedResultsController不是那麼聰明。當你創建它時,你在它上面設置一個fetchedRequest和一個上下文,並且告訴它performFetch。一旦它執行了一個獲取,它就有一個匹配謂詞的對象數組。然後它監視傳遞給它的核心數據上下文的所有更改。當一個對象(具有相同的實體類型)被改變時,fetchedResultsController然後在改變對象上運行提取請求的謂詞,以決定是否應該從列表中添加或刪除它。如果該對象被刪除,或之前已在列表中,並且現在不在列表中,則它是delete。如果它不在列表中,但現在它通過謂詞,那麼它是insert。如果排序描述符使用的某個字段發生更改,則它是move,否則它是update。如果同時進行了很多更改(上下文中有一個save),則會按順序委派事件 - 刪除,插入,移動,更新。 indexPath的值是任何插入或刪除之前的索引,newIndexPath是任何插入或刪除後的值。這是否回答你的問題?

+0

是的,它的確如此。非常感謝! – Shira

相關問題