我正在尝试在表格视图中插入新部分
throws
我得到一个错误:
无效的更新:无效的节数。区间数 更新(80)之后,表格视图中包含的内容必须等于 更新之前表视图中包含的节数(40), 加上或减去插入或删除的节数(插入80个, 0已删除)。
当我执行以下操作时:
let oldIns = insertCounter //insertCounter = 40
insertCounter += Int(INSERT_MESSAGES) // insertCounter = 80
let minn = min(insertCounter, Int(dbmessages.count))
print(minn) // minn = 80
tableView.beginUpdates()
tableView.insertSections(NSIndexSet(indexesIn: NSMakeRange(0, minn)) as IndexSet, with: .top)
tableView.endUpdates()
override func numberOfSections(in tableView: UITableView) -> Int {
let a = min(insertCounter, Int(dbmessages.count))
print(a) // after call insertSections a = 80
return min(insertCounter, Int(dbmessages.count))
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 5
}
我得到了错误:
异常“ NSInternalInconsistencyException”,原因:“试图 插入第80条,但更新后只有80条。
我在做什么错?
答案 0 :(得分:0)
如所描述的错误,您的旧节计数为40,插入80个节,因此更新的节计数应为120。
override func numberOfSections(in tableView: UITableView) -> Int {
let a = min(insertCounter, Int(dbmessages.count))
print(a) // after call insertSections a = 80
// you should return 120 instead of 80 here.
return min(insertCounter, Int(dbmessages.count))
}
或者您可以这样插入
tableView.insertSections(NSIndexSet(indexesIn: NSMakeRange(oldIns, minn)) as IndexSet, with: .top)