2016-11-27 82 views
0

描述

我有一個名爲Person的CoreData條目,我使用NSFetchedResultsController獲取它,並按屬性「name」排序的fetchRequest。然後我在表格視圖單元格中顯示「名稱」。批量更新表格行,同時重新排序和更新?

問題

當我改變了實體的「名稱」屬性,行重新排序,NSFetchedResultsControllerDelegate沒有給我一個NSFetchedResultsChangeType.move。但顯示在單元格上的「名稱」已過時,這意味着我沒有收到NSFetchedResultsChangeType.update

Table View Programming Guide: Inserting and Deleting Rows and Sections說批量更新首先執行更新,然後刪除,最後插入。

它延遲行或段的任何插入,直到處理行或段的刪除。表視圖的行爲與在更新塊中調用的重新裝入方法的行爲相同 - 在執行動畫塊之前,將重新加載行和段的索引。無論插入,刪除和重新加載方法調用的順序如何,都會發生此行爲。

問題

如何通過NSFetchedResultsController發送的通知的實施,特別是在插入的順序,刪除,更新&移動任何想法?

或者我怎樣纔能有效地使用某種代碼(意味着部分更新,而不是重新加載所有數據)來解決這個特殊問題?

回答

0

您的設置是非標準的。 sectionNameKeyPath確實是指部分而不是。獲取Person實體並直接通過itemForRowAtIndexPath用人名填充單元格。

然後,您將有可用的預期更改類型。

+0

我的不好。我實際上是指提取請求排序描述符。問題已更新。 設置'sectionNameKeyPath'只是不應該與您的獲取請求排序衝突。即使我不把物體分成幾部分,問題仍然存在。 – jchnxu

+0

那麼問題是什麼?您現在在行的代表回調中有'.move'作爲選項,對吧? – Mundi