我有一个UITableView使用NSFetchedResultsControlleras作为数据源.
核心数据存储在并行运行的多个后台线程中更新(每个线程使用它自己的NSManagedObjectContext).
主线程观察NSManagedObjectContextDidSaveNotification
通知并更新其上下文mergeChangesFromContextDidSaveNotification:.
有时发生NSFetchedResultsController的NSFetchedResultsChangeUpdate事件是发送一个当前不再存在的indexPath 的
事件.
例如:获取的结果控制器的结果集包含1个包含4个对象的部分.第一个对象在一个线程中删除.最后一个对象在另一个线程中更新.然后有时会发生以下情况:
但是获取的结果控制器现在只包含3个对象,如果调用
MyManagedObject *obj = [controller objectAtIndexPath:indexPath]
Run Code Online (Sandbox Code Playgroud)
要根据NSFetchedResultsChangeUpdate
事件更新表视图单元格,这会因NSRangeException异常而崩溃.
感谢您的任何帮助或想法!