gpt4 book ai didi

ios - 在完成之前调用 Dispatch.main.asyncAfter() 会导致应用程序崩溃

转载 作者:行者123 更新时间:2023-11-30 12:16:45 25 4
gpt4 key购买 nike

所以我有一个带有单选按钮的应用程序来检查任务,只要我让动画完成,一切都会按预期工作,但如果我同时按下两个按钮,我会收到错误:

libc++abi.dylib: terminating with uncaught exception of type 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")
}
}


}

错误消息

Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Invalid update: invalid number of rows in section 0. The number of rows contained in an existing section after the update (11) must be equal to the number of rows contained in that section before the update (13), plus or minus the number of rows inserted or deleted from that section (0 inserted, 1 deleted) and plus or minus the number of rows moved into or out of that section (0 moved in, 0 moved out).'

最佳答案

表行删除操作也需要删除表数组的元素。

根据您的代码,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()
})

关于ios - 在完成之前调用 Dispatch.main.asyncAfter() 会导致应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45349580/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com