我有一个由 NSFetchedResultsController 支持的 UITableView,它显示了用户已添加书签的项目。可以从行中的按钮取消对项目的书签,这会导致问题。取消标记项目后,它应该从表视图中消失,因为它不再与谓词匹配,但是因为更新更改了我每节的行数,我得到了这个错误的变体:
CoreData:错误:严重的应用程序错误。在调用 -controllerDidChangeContent: 期间,从委托 NSFetchedResultsController 中捕获了异常。无效更新:第 0 节中的行数无效。更新后现有节中包含的行数 (3) 必须等于更新前该节中包含的行数 (4),加上或减去数字从该部分插入或删除的行数(0 插入,0 删除)加上或减去移入或移出该部分的行数(0 移入,0 移出)。与用户信息(空)
这是我非常简单的 didChangeObject 方法:
-(void)controller:(NSFetchedResultsController *)controller
didChangeObject:(id)anObject
atIndexPath:(NSIndexPath *)indexPath
forChangeType:(NSFetchedResultsChangeType)type
newIndexPath:(NSIndexPath *)newIndexPath
{
[super controller:controller didChangeObject:anObject atIndexPath:indexPath forChangeType:type newIndexPath:newIndexPath];
[self.tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
}
有什么方法可以指示 NSFetchedResultsController 不要为不匹配的计数出汗?还是我需要完全不同的方法?