2010-10-22 76 views
1

我有一個UITableViewController獲取與NSFetchedResultsController的對象集合A.NSFetchedResultsController和UITableViewCell

這很好,如果這些對象A的屬性被更新,A的UITableViewCell反映了這種變化。

問題:這個對象有一個關係A-> [B1,B2,B3 ...]。該單元格在其顯示器中使用了B的一些屬性。如果我更新B的屬性之一,則UITableViewCell不會反映更改。

當我更新B中的一個時,如何在不重新加載整個tableview的情況下更改單元格。有沒有辦法標記一個對象來更新?

回答

0

我會試試James的答案。 我還發現使用refreshObject:mergeChanges:on A會觸發重新加載此對象。可以這樣做嗎?

2

您可以註冊NSManagedObjectContextObjectsDidChangeNotification並查看userInfo字典中的NSUpdatedObjectsKey值。如果其中一個更新的對象是B1,B2,B3等,則遵循其反向關係來確定哪個A對象「已更改」。您可以通過在NSFetchedResultsControllerfetchedObjects陣列中找到它來確定「已更改」A的索引。然後,最後在UITableView上撥打reloadRowsAtIndexPaths:withRowAnimation: