我使用NSFetchedResultsController成功更新了一个tableview,这就是我正在做的事情:
- (NSFetchedResultsController *)fetchedResultsController
以填充tableview self.fetchedResultsController.delegate = nil
<myEntityName>
[NSEntityDescription insertNewObjectForEntityForName:<myEntityName> inManagedObjectContext:managedObjectContext];
self.fetchedResultsController.delegate = self;
在这之后,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插入消息会导致我的其他工作代码中断?
在我的原始代码中,我删除了mangagedObjects然后插入managedObjects就好了,但是当我只删除managedObjects时,代码就会中断。
我不需要单独更新每个单元格,我当前的代码工作正常。我如何使它工作?
我在这里缺少什么?