2010-10-22 78 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: