【发布时间】:2011-04-24 20:12:00
【问题描述】:
我正在使用 NSFetchedResultsController 呈现表格视图内容,它有一个谓词:
[NSPredicate predicateWithFormat:@"visible == %@", [NSNumber numberWithBool:YES]]
在使用单独的NSManagedObjectContext 的后台线程上,我更新了一些实体并将它们的visible 值从NO 更改为YES。在主线程的NSManagedObjectContext 中保存、合并更改。但是NSFetchedResultsController 的fetchedObjects 不会改变。控制器也不会在委托上调用-controller:didChangeObject:...。如果实体以相同的方式在主线程上更新(我的测试应用调用相同的方法),一切都会按预期工作。
Notification 的NSUpdatedObjectsKey 也包含这些对象。
目前我发现的唯一解决方案是调用每个 NSUpdatedObjectsKey 实体:
NSManagedObjectContext *context = ... // main thread context
[context existingObjectWithID:[object objectID] error:nil]
此问题仅存在于以前与谓词不匹配的更新对象。
我是否遗漏了一些明显的东西?
【问题讨论】:
-
不是Core Data的bug吗?我认为我们应该向 Apple 提交错误报告。我刚做了一个。
-
错误?如果有,有什么进展吗?
-
iOS 10 终于修复了这个 bug:twitter.com/an0/status/750413478620491776
标签: core-data ios nsfetchedresultscontroller nspredicate