无效更新:无效的节数
Posted
技术标签:
【中文标题】无效更新:无效的节数【英文标题】:Invalid update: invalid number of sections 【发布时间】:2017-07-23 14:34:53 【问题描述】:由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“。更新后表视图中包含的节数(3)必须等于更新前表视图中包含的节数(3),加上或减去插入或删除的节数(1插入,0已删除)。'
但我根据我错过的数据源插入 1 并删除了一个
self.states?.append(sortedStates) //Update state property
if (self.states?.count)! > 3
self.states?.removeFirst()
self.newsFeedTableView.beginUpdates()
self.newsFeedTableView.insertSections([(self.states?.count)! - 1], with: .none)
if (self.states?.count)! > 3
let statesForoldestStateTime = self.states?.first
self.newestStateTime = statesForoldestStateTime?.first?.createdAt
let indexpostion = (self.states?.count)! - 3
self.newsFeedTableView.deleteSections([indexpostion], with: UITableViewRowAnimation.none)
self.newsFeedTableView.endUpdates()
【问题讨论】:
满足条件才更新。 不相关,但考虑合并您数量惊人的问号。例如,为什么states
是可选的?
@vadian 数据从网络加载,这就是声明 var states : [[State]]?
的原因
在大多数情况下,将集合类型声明为空的非可选类型var states = [[State]]()
更合适,尤其是对于数据源数组。
【参考方案1】:
错误说明了一切。当if (self.states?.count)! > 3
为假时。唯一的部分将被插入而不是被删除。
您应该相应地更新您的数据源。节数方法必须返回someArray.count
。当您插入某个部分时,请确保更新该数组,当您删除某个部分时,请从某个数组中删除该元素。这将解决问题。
【讨论】:
以上是关于无效更新:无效的节数的主要内容,如果未能解决你的问题,请参考以下文章