当我快速检查我的任务时,我遇到了问题,这会导致应用程序崩溃并导致错误:
由于未捕获的异常终止应用程序' NSInternalInconsistencyException',原因:'无效更新:第0部分中的行数无效。更新后现有部分中包含的行数(7)必须等于更新前的该部分中包含的行数(9),加上或减去从该部分插入或删除的行数(0插入,1删除)和加或减移入的行数或超出该部分(0移入,0移出)。'
使用radiobutton时的代码
func RadioTapped(_ cell: TableViewCell) {
if let indexPath = tableView.indexPath(for: cell) {
// Removes task from coreData
let task = self.tasks[indexPath.row]
self.context.delete(task)
do {
self.tasks = try self.context.fetch(TodayTask.fetchRequest())
(UIApplication.shared.delegate as! AppDelegate).saveContext()
// Animate the removal of task cell
DispatchQueue.main.asyncAfter(deadline: .now() + .milliseconds(800),execute: {
self.tableView.deleteRows(at: [indexPath], with: .fade)
})
} catch {
print("Fetching failed")
}
}
}
答案 0 :(得分:1)
由于未捕获的异常而终止应用 'NSInternalInconsistencyException',原因:'无效更新:无效 第0节中的行数。包含在中的行数 更新后的现有部分(7)必须等于数量 更新前的该部分中包含的行(9),加号或减号 从该部分插入或删除的行数(插入0, 删除1)加上或减去移入或移出的行数 该部分(0移入,0移出)。'
此崩溃意味着您要删除表格行。您没有更新您的arrayCount,例如您已在numberOfRowsInSection
方法中定义了8,然后在删除行之前,您还需要根据要删除的行更新行数。否则,当您deleteRows
调用它时,它也会调用numberOfRowsInSection
方法,并且计数将不匹配,并且会崩溃。