如何知道NSFetchedResultsChangeUpdate更改哪些属性?

我认为有一个controller:didChangeObject:atIndexPath:forChangeType:newIndexPath:的问题controller:didChangeObject:atIndexPath:forChangeType:newIndexPath:专门为NSFetchedResultsChangeUpdate :它不会告诉你什么样的变化导致此NSFetchedResultsChangeUpdate

我有一个非常复杂的实体。 只有一部分数据被用来填充我的表格视图单元格。 我不想更新我的单元格以进行任何不相关的属性更改 – 这是浪费资源。 那么如何才能知道哪些属性更改导致此NSFetchedResultsChangeUpdate以便我可以避免更新我的表视图单元格,如果它是不相关的?

NSManagedObject有两个方法。 首先返回一个字典,其中包含自上次获取或保存对象以来已更改的键和(新)值(此操作可高效实现,而不会触发关系错误)

 - (NSDictionary *)changedValues; 

第二:

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

你可以通过NSFetchedResultsController来调用NSFetchedResultsChangeUpdate通知

您可以将分配给单元格的值与已更改的NSManagedObject中的属性值进行比较。 假设您在自定义单元格上使用了3个标签,并且您有对象更新,则可以向您的单元格子类中添加一个方法,并通过NSManagedObject询问单元是否需要更新。 单元格将validationNSManagedObject的值,并将它们与标签的值进行比较。 如果不相等,则需要更新。 您可以从您在问题上发布的委托方法的索引path访问单元格。