我有一个后台线程,它执行后台更新,设置/覆盖几种 NSManagedObjects 上的字段。所有子类都包含一个 lastModified 属性,该属性在后台任务处理时始终会更新。
我的问题是,当我这样做时,后台线程命中的所有实体也会触发controllerWillChangeContent/controllerDidChangeContent。即使什么都没有真正改变。
如果我点击了 setter(例如使用 NSString 但内容实际上没有改变),它是否仍然会触发更新,或者 CoreDate 是否足够聪明来忽略这一点?
在通知 resultsController 的更改时,是否可以以某种方式标记不包含的属性?
最佳答案
您可以使用 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
关于ios - 核心数据和 NSFetchedResultsController : ignoring fields in controllerDidChangeContent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26043301/