swift TableView错误:“尝试将行1插入到节0中,但更新后节0中只有0行”

2fjabf4q  于 12个月前  发布在  Swift
关注(0)|答案(1)|浏览(97)

enter image description here

func reloadCellOfTableView(_ tableView: UITableView, cell: UITableViewCell) {
    DispatchQueue.main.async {
        if let indexPath = tableView.indexPath(for: cell) {
            tableView.reloadRows(at: [indexPath], with: UITableViewRowAnimation.automatic)
        }
    }
}

字符串
在我调用上述函数后,应用程序崩溃了,firebase上的错误日志是:
尝试将第1行插入第0节,但更新后第0节中只有0行。
这种错误很少发生。
我尝试使用tableView.beginUpdates()tableView.endUpdates()

j0pj023g

j0pj023g1#

在处理可扩展视图时,始终保持数据源和表视图之间的同步状态至关重要。如果数据源可以在后台线程中更改,请谨慎并优先考虑同步。
为确保一致性,请始终在向数据源添加新数据后立即调用更新/insert/endUpdate。更新视图缓存更改,这允许在CPU时间和资源充裕时进行更有效的更新。
调用endUpdates后,可扩展视图将在数据源中查询更新的节数和行数。如果数据源直接链接到节数和行数,请确保新计数(包括任何插入和删除)与数据源的编号准确匹配。
最后,请注意:避免将对'reloadData'的调用与对reloadUpdate/endUpdate的调用混合使用。坚持使用其中一个或另一个,以确保顺利更新并防止潜在问题。

相关问题