我的 NSFetchedResultsController 出现问题,似乎可以通过打开 IncludesPendingChanges 来解决,这让我很担心。(我发现这不是真的,包括未决的更改也无济于事。)
发生的情况是我的 Fetched Results Controller 在完整的 API 刷新时正确获取并显示我的对象。逐步进行,我已经确认这个完整的 API 刷新的临时上下文被保存和合并,没有错误。
但是,如果我随后返回到从不同导航流执行相同获取请求的视图,则仅返回和显示一个部分完整的对象,而不是完整的对象集。如果我此时执行完整的 API 刷新,刷新会显示正确的对象。
我相信我的问题可能是 mergeChangesFromContextDidSaveNotification 没有传播到主要上下文,但是从我的日志和逐步执行来看,在我看来它正在正确保存。我不知道从这里去哪里。虽然 IncludesPendingChanges 修复了症状,但我认为它不能解决根本问题。
作为一些附加信息,我正在使用这个框架来管理我的核心数据:https ://github.com/vokalinteractive/CoreDataManager-iOS
我通过在 VIFetchedResultsController.m 的第 156 行添加来打开 includesPendingChanges
[fetchRequest setIncludesPendingChanges:YES]
编辑无论什么侥幸让我相信 includePendingChanges 到 YES 修复了问题不再存在。原来这个项目有一些非常麻烦的内存管理,在花了一整天清理之后,我仍然没有接近完成这项工作。不过,在同一点上,更改似乎没有传播到主数据存储,或者没有坚持下去。
作为提示,就像我在下面的评论中提到的那样,即使我指定“includePendingChanges:YES”,使用以下命令注销我获取的对象:
[self.fetchedResultsController.fetchedObjects description]
以“includesPendingChanges:NO”结尾。知道什么会导致这种情况吗?