核心数据& NSFetchedResultsController:忽略controllerDidChangeContent中的字段

时间:2014-09-25 16:12:45

标签: ios objective-c core-data nsfetchedresultscontroller

我有一个后台线程执行后台更新,设置/覆盖几种NSManagedObjects上的字段。所有子类都包含lastModified属性,该属性在后台任务处理时始终会更新。

我的问题是,当我这样做时,被后台线程命中的所有实体也将触发controllerWillChangeContent / controllerDidChangeContent。即使没有真正改变。

  • 如果我点击了一个setter(例如有一个NSString,但内容没有真正改变,它是否仍然会触发更新,或者CoreDate是否足够聪明以忽略它?

  • 在通知对resultsControllers的更改时,是否有可能以某种方式标记不包含的属性?

1 个答案:

答案 0 :(得分:1)

您可以使用setPrimitiveValue:forKey:更改NSManagedObject而不发送任何KVO通知(触发nsfetchedresultscontroller更新)

例如

[self setPrimitiveValue:[NSDate date] forKey:@"lastModified"]

您可以在此处详细了解这些内容 https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/CoreData/Articles/cdAccessorMethods.html#//apple_ref/doc/uid/TP40002154-SW5