所以我有一个带有radiobuttons的应用程序来检查任务,一切都按预期工作,只要我让动画完成但是如果我同时按下两个按钮我会收到错误:
libc ++ abi.dylib:以NSException类型的未捕获异常终止
每次点击单选按钮时执行代码
func RadioTapped(_ cell: TableViewCell) {
if let indexPath = tableView.indexPath(for: cell) {
// Removes task from coreData
let task = self.tasks[indexPath.row]
print(tasks.count)
self.context.delete(task)
print(tasks.count)
(UIApplication.shared.delegate as! AppDelegate).saveContext()
do{
self.tasks = try self.context.fetch(TodayTask.fetchRequest())
// Animates the removal of task cell
DispatchQueue.main.asyncAfter(deadline: .now() + .milliseconds(800),execute: {
self.tableView.beginUpdates()
self.tableView.deleteRows(at: [indexPath], with: .fade)
self.tableView.endUpdates()
})
} catch {
print("Fetching Failed")
}
}
}
错误消息
由于未捕获的异常'NSInternalInconsistencyException'而终止应用程序,原因:'无效更新:第0节中的行数无效。更新后的现有部分中包含的行数(11)必须等于行数在更新(13)之前包含在该部分中,加上或减去从该部分插入或删除的行数(插入0,删除1)并加上或减去移入或移出该部分的行数(0移入,0搬出去。'
答案 0 :(得分:0)
表行删除操作还需要删除表数组的元素。
根据您的代码,self.tasks
可能是您的表格列表。
删除' self.tasks'的元素。来自相同的索引,您要为其删除行。
提示:
// Remove array element
self.tasks.remove(at: <index.row>)
DispatchQueue.main.asyncAfter(deadline: .now() + .milliseconds(800),execute: {
self.tableView.beginUpdates()
self.tableView.deleteRows(at: [indexPath], with: .fade)
self.tableView.endUpdates()
})