2012-08-08 36 views
2

我認爲有一個controller:didChangeObject:atIndexPath:forChangeType:newIndexPath:的問題,具體爲NSFetchedResultsChangeUpdate:它不會告訴你什麼樣的改變導致這個NSFetchedResultsChangeUpdate如何知道哪些屬性爲NSFetchedResultsChangeUpdate更改?

我有一個非常複雜的實體。只有一部分數據被用來填充我的表格視圖單元格。我不想更新我的單元格以進行任何不相關的財產更改 - 這是浪費資源。那麼如何才能知道哪些屬性更改會導致此0123ree,以便我可以避免更新我的表視圖單元格(如果它不相關)?

回答

1

NSManagedObject有兩種方法。首先將返回鍵和(新)值的字典自去年取已更改或保存對象(這是有效地實現兵不血刃的關係故障)

- (NSDictionary *)changedValues; 

二:

- (NSDictionary *)changedValuesForCurrentEvent NS_AVAILABLE(10_7, 5_0); 

你打電話給他們NSFetchedResultsChangeUpdate通知NSFetchedResultsController

1

可以將分配給單元格的值與更改的NSManagedObject中的屬性值進行比較。假設您在自定義單元格上使用了3個標籤,並且您的對象有更新,您可以向您的單元格子類添加一個方法,並通過NSManagedObject詢問單元是否需要更新。單元格將驗證NSManagedObject的值並將它們與標籤的值進行比較。如果它們不相同,則需要更新。您可以從您在問題中發佈的委託方法的索引路徑訪問單元格。

+0

但我的單元格非常複雜,也有很大的二進制屬性其比較成本很高。 – an0 2012-08-09 01:09:35

+0

但您只比較單元格上顯示的屬性。你將大的二進制對象的數據分配給單元格的內容嗎? – J2theC 2012-08-09 04:13:37

+0

是的,我改變了圖像。 – an0 2012-08-09 14:16:50

相關問題