【发布时间】:2015-12-28 17:47:55
【问题描述】:
我有一个表格视图,我用 CoreData 中的实体填充。问题是当我尝试从表视图中删除实体时。 CoreData 似乎正在删除并保存更新,但有一个错误和 2 个警告被抛出。错误似乎来自这一行
tableView.deleteRowsAtIndexPaths([indexPath],withRowAnimation: UITableViewRowAnimation.Automatic)
这就是错误所说的:
由于未捕获的异常而终止应用程序 'NSInternalInconsistencyException',原因:'无效更新:无效 第 0 节中的行数。包含在第 0 节中的行数 更新后的现有节(4)必须等于 更新之前该部分中包含的行 (4),加号或减号 从该部分插入或删除的行数(0 插入, 1 已删除)并加上或减去移入或移出的行数 该部分(0 移入,0 移出)。
我看到的两个警告如下:
“try”表达式中不会调用抛出函数
'catch' 块无法访问,因为在 'do' 中没有抛出错误 块。
这是调用此代码的函数:
func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle,forRowAtIndexPath indexPath: NSIndexPath) {
if editingStyle == UITableViewCellEditingStyle.Delete {
//1
let personToRemove = persons![indexPath.row]
print(personToRemove)
print(indexPath.row)
//2
coreDataStack.context.deleteObject(personToRemove)
//3
do {
try! coreDataStack.saveContext()
} catch let error as NSError {
print("Could not save: \(error)")
}
//4
tableView.deleteRowsAtIndexPaths([indexPath],withRowAnimation: UITableViewRowAnimation.Automatic)
}
}
当我评论一些事情以查看故障在哪里时,它似乎是最后一行。它似乎在抱怨行数,所以在删除行时我可能遗漏了一段关键代码。
谢谢!
【问题讨论】:
标签: ios uitableview core-data swift2