使用 insertSections 而不是 reloadData 时出现 NSInternalInconsistencyException
NSInternalInconsistencyException when using insertSections instead of reloadData
var data = [InboxPosts]()
func setup() {
AF.request("https://example.com", method: .get, parameters: parameters, headers: headers)
.validate().responseData { response in
switch response.result {
case .success(let data):
//get data from service
let rel = InboxPosts(userid: id, name: name)
if !self.data.contains(rel) {
self.data.append(rel)
}
let indexSet = IndexSet(integer: self.data.count - 1)
self.tableView.beginUpdates()
self.tableView.insertSections(indexSet, with: .automatic)
self.tableView.endUpdates()
}
}
}
override func viewDidLoad() {
super.viewDidLoad()
setup()
}
我将数据添加到数组并调用 InsertSections
func tableView(_: UITableView, numberOfRowsInSection _: Int) -> Int {
return 1
}
func numberOfSections(in _: UITableView) -> Int {
return data.count
}
如果我使用 reloadData() 效果很好,但是当我使用 insertSections 时我得到
Invalid update: invalid number of sections. The number of sections contained in the table view after the update (16) must be equal to the number of sections contained in the table view before the update (0), plus or minus the number of sections inserted or deleted (1 inserted, 0 deleted)
当新数据可用时,我不想使用 reloadData 并使用 insertSections 添加单元格,但我该如何解决这个问题?
我用这段代码修复了它
self.tableView.beginUpdates()
self.tableView.insertSections(NSIndexSet(indexesIn: NSMakeRange(0, self.data.count)) as IndexSet, with: .automatic)
self.tableView.endUpdates()
var data = [InboxPosts]()
func setup() {
AF.request("https://example.com", method: .get, parameters: parameters, headers: headers)
.validate().responseData { response in
switch response.result {
case .success(let data):
//get data from service
let rel = InboxPosts(userid: id, name: name)
if !self.data.contains(rel) {
self.data.append(rel)
}
let indexSet = IndexSet(integer: self.data.count - 1)
self.tableView.beginUpdates()
self.tableView.insertSections(indexSet, with: .automatic)
self.tableView.endUpdates()
}
}
}
override func viewDidLoad() {
super.viewDidLoad()
setup()
}
我将数据添加到数组并调用 InsertSections
func tableView(_: UITableView, numberOfRowsInSection _: Int) -> Int {
return 1
}
func numberOfSections(in _: UITableView) -> Int {
return data.count
}
如果我使用 reloadData() 效果很好,但是当我使用 insertSections 时我得到
Invalid update: invalid number of sections. The number of sections contained in the table view after the update (16) must be equal to the number of sections contained in the table view before the update (0), plus or minus the number of sections inserted or deleted (1 inserted, 0 deleted)
当新数据可用时,我不想使用 reloadData 并使用 insertSections 添加单元格,但我该如何解决这个问题?
我用这段代码修复了它
self.tableView.beginUpdates()
self.tableView.insertSections(NSIndexSet(indexesIn: NSMakeRange(0, self.data.count)) as IndexSet, with: .automatic)
self.tableView.endUpdates()