我正在使用 NSFetchedResultsController 成功更新 tableview,这就是我正在做的事情:
- 加载应用程序并调用
- (NSFetchedResultsController *)fetchedResultsController
以填充表格视图 - 放
self.fetchedResultsController.delegate = nil
- 删除所有命名的实体
<myEntityName>
- 使用以下方法将一个或多个实体插入MOC
[NSEntityDescription insertNewObjectForEntityForName:<myEntityName> inManagedObjectContext:managedObjectContext];
- 挂钩 FetchedResultsController 备份:
self.fetchedResultsController.delegate = self;
- 然后我保存 MOC
在这一切之后,FetchedResultsController 方法controllerDidChangeContent:
触发,我已经放置[self.tableView reloadData]
了表更新,我很高兴。
同样,这一切都很好。导致我头疼的原因是当我简单地删除[NSEntityDescription insertNewObjectForEntityForName:entityName inManagedObjectContext:managedObjectContext];
消息时,我收到以下错误:
'NSInternalInconsistencyException', reason: 'no section at index 3'
我大致知道发生了什么:MOC 与 FetchedResultsController 不同步,似乎当其他人遇到这种情况时,他们开始退出controller:didChangeObject:atIndexPath:forChangeType:newIndexPath:
并configureCell:atIndexPath:
逐行更新 fetchController。
但我的问题是:为什么简单删除 managedObject 插入消息会导致我原本可以工作的代码中断?
在我的原始代码中,我删除了 managedObjects,然后插入 managedObjects 就好了,但是当我只删除 managedObjects 时,代码会中断。
我不需要每个单元格单独更新,我当前的代码工作正常。我如何使它工作?
我在这里想念什么?