我在使用 NSFetchedResultsController 和 CoreData 时遇到了一些烦人的问题,如果能得到帮助,我将非常感激。
问题 1 - 更新:我在后台线程上更新我的商店,这导致某些行被删除、插入或更新。使用“mergeChangesFromContextDidSaveNotification:”方法将更改合并到主线程上的上下文中。插入和删除会正确更新,但更新不会(例如,单元格标签不会随着更改而更新),尽管我已经确认更新来自 contextDidSaveNotifcation,就像插入和删除一样。我目前的解决方法是将上下文的陈旧间隔临时更改为 0,但这似乎不是理想的解决方案。
问题 2 - 删除对象:我的 fetch 批量大小为 20。如果前 20 行中的后台线程删除了一个对象,则一切正常。但是如果对象在前 20 行之后并且表格向下滚动,则会引发“CoreData 无法完成错误”错误。我尝试重新保存上下文并重新执行 frc 提取 - 一切都无济于事。注意:在这种情况下,不调用 frc 委托方法“didChangeObject ....”进行删除 - 我认为这是因为当时有问题的对象没有出错(因为它超出了初始提取范围)。但是由于某种原因,上下文仍然认为该对象在附近,尽管它已从存储中删除。
问题 3 - 删除部分:当删除一行导致删除部分时,我得到“部分中的行数无效???” 错误。我已经通过从 NSFetchedResultsChangeMove: 部分中删除“reloadSection”行并将其替换为“[tableView insertRowsAtIndexPaths ....”来解决此问题,这似乎可行,但我再次不确定这是否是最佳解决方案。
任何帮助将不胜感激。谢谢!