删除了两个项目。
func controller(controller: NSFetchedResultsController!, didChangeObject anObject: AnyObject!, atIndexPath indexPath: NSIndexPath!, forChangeType type: NSFetchedResultsChangeType, newIndexPath: NSIndexPath!) {
switch(type) {
case .Delete:
tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Fade)
default:
break
}
}
在删除行中,我收到此错误:
CoreData:错误:严重的应用程序错误。抓住了例外 在核心数据更改处理期间。这通常是一个bug NSManagedObjectContextObjectsDidChangeNotification的观察者。 无效更新:第0节中的行数无效 更新(0)后必须包含在现有部分中的行 等于之前该部分中包含的行数 update(2),加上或减去插入或删除的行数 该部分(0插入,1删除)和加号或减号的数量 移入或移出该部分的行(0移入,0移出)。同 userInfo(null)
***由于未捕获的异常'NSInternalInconsistencyException'而终止应用,原因:'无效更新:无效 第0节中的行数。包含在中的行数 更新后的现有部分(0)必须等于数量 更新前的该部分中包含的行(2),加号或减号 从该部分插入或删除的行数(插入0, 删除1)加上或减去移入或移出的行数 该部分(0移入,0移出)。'
答案 0 :(得分:2)
你需要批量生产'通过实现controllerWillChangeContent
和controllerDidChangeContent
委托方法进行更新,如下所示(虽然抱歉这些是Obj-c):
- (void)controllerWillChangeContent:(NSFetchedResultsController *)controller {
[self.tableView beginUpdates];
}
- (void)controllerDidChangeContent:(NSFetchedResultsController *)controller {
[self.tableView endUpdates];
}