繁体   English   中英

无效更新:执行 TableView.reloadData() 时的节数无效

[英]Invalid update: invalid number of sections when doing TableView.reloadData()

我得到了例外:

无效更新:无效的节数。 更新后表视图中包含的节数(2)必须等于更新前表视图中包含的节数(1),加上或减去插入或删除的节数(1插入,1已删除)。

这就是我的部分 function 的样子。

func numberOfSections(in tavleView: UITableView) -> Int {
    let someArray = someFunctionToRetrieveArrayFromUserDefaults()
    return someArray.count 
}

该数组是从 UserDefaults 检索的解码数组。 每次添加新值时,都会将编码数组写入 UserDefaults,因此它始终是最新的。

任何人都可以帮助澄清异常以及我做错了什么吗?

如前所述,插入 (1) + 删除 (1) 的数量为 1 - 1 = 0,而您返回的值为 2(someArray.count 为 2)。 你用过 peformBatch 吗? 插入/删除行?

为什么会这样? 从您提供的非常短的代码示例中很难知道,我假设您的数组不是线程安全的(您已经提到从 UserDefaults 解码),因此在调用 numberOfSections 时,数据尚未同步。

尝试制作一个不访问 UserDefaults 的更简单的 someArray,并使您的代码运行而不会崩溃。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM