ios - 核心数据和 NSFetchedResultsController : ignoring fields in controllerDidChangeContent

标签 ios objective-c core-data nsfetchedresultscontroller

我有一个后台线程,它执行后台更新,设置/覆盖几种 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/

相关文章:

ios - UIImage 未显示在 UIBarButtonItem 上

ios - UIView 动画剪辑 View 边界。有什么方法可以防止剪裁?

objective-c - NSString - Unicode 到 ASCII 等价物

ios - 无法从 NSDictionary iOS 获取所有匹配字符串

ios - 泛型 UITableView 和 NSFetchedResultsController,继承自 UITableViewDelegate、UITableViewDataSource 和 NSFetchedResultsController

iphone - nsfetchedresultscontroller 中部分名称键路径的无关系值

ios - 为什么更新到 Xcode 12 后会出现链接错误?

ios - 点积和亮度/Findmyicone

cocoa - 从 MacOS 应用程序将文件写入 iOS 设备

xcode - CoreData 唯一约束在 Xcode 中消失