1

我正在使用 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 时,代码会中断。

我不需要每个单元格单独更新,我当前的代码工作正常。我如何使它工作?

我在这里想念什么?

4

0 回答 0