在尝试删除TableView项时,我将得到以下错误。
由于未命名的异常“NSInternalInconsistencyException”终止应用程序,原因是:“无效更新:节0中的无效行数。更新(4)之后包含在现有节中的行数必须等于更新(4)之前包含在该节中的行数,加上或减去从该节插入或删除的行数(0插入,1已删除),加上或减去移入或移出该节的行数(0移动,0移出)。”
我使用以下代码:
override func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {
if editingStyle == .Delete {
let roomToDelete : House = self.frc.objectAtIndexPath(indexPath) as! House
moc.deleteObject(roomToDelete)
do {
try moc.save()
} catch {
print("Failed to save upon delete")
return
}
tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Automatic)
self.tableView.reloadData()
}
}如果关闭最后两行代码,则不会得到错误,但该行不会删除,因为我只是从Core数据中删除数据。如果我离开这张桌子还回去的话,那行就没了。我认为这个错误是因为我没有将移除的行与节中的行数联系起来,所以存在不匹配。我所做的所有搜索都带有类似于我所拥有的程序。
发布于 2016-02-15 22:48:49
我能让它通过-
1)移除
tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Automatic)从提交编辑样式函数和
2)增加
self.tableView.reloadData()到viewDidLoad函数的末尾
发布于 2016-02-14 08:58:03
您应该将视图控制器设置为FRC委托,并使用委托方法更新表视图。由于FRC是您的数据源,它必须知道删除的情况,才能更新行计数。
在提交方法中,应该只是从上下文中删除对象。不应从表中删除行或重新加载表(应由FRC委托方法完成)。
https://stackoverflow.com/questions/35385674
复制相似问题