2012-08-08 102 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

相关问题