InsertRowsAtIndexPaths错误Swift

时间:2015-09-03 14:08:10

标签: ios swift uitableview

我有一个uitableview,我尝试通过insertRowsAtIndexPaths函数附加它。 如果我只是将数据添加到数据源数组中,uitableview很好地附加,但是我很难通过上面提到的函数插入它。

这是我的代码

    func insertData(){

// appending arrays
    answersdict.append(answersmain[answertitle1]![0]) // count 1
    resultanswers2d.append(carsmain[answertitle1]!) // count 3
    self.tableView.reloadData()

// inserting rows

    self.tableView.beginUpdates()

    let insertedIndexPathRange = 0..<carsmain[answertitle1]!.count + 1 // total count 4
    var insertedIndexPaths = insertedIndexPathRange.map { NSIndexPath(forRow: $0, inSection: 1) }

    self.tableView.insertRowsAtIndexPaths(insertedIndexPaths, withRowAnimation: .Fade)
    self.tableView.endUpdates()

我的部分数据源计数为2(因此第1部分存在)和numberOfRows - 它等于resultanswers2d[section].count + 1,这给了我4

所以我试图在已经附加的数组中插入4行,该数组在该部分中有4个可能的行,但我经常遇到错误,如

  

更新后现有部分中包含的行数   (4)必须等于该部分中包含的行数   在更新(4)之前,加上或减去插入的单元格(插入4个,删除0个)

或者如果我努力

  

malloc_error

卡住了。需要任何见解。谢谢。

2 个答案:

答案 0 :(得分:3)

删除该行以重新加载表格。

insertRowsAtIndexPaths相应地更新了表格。

数据源和表中的插入次数和位置必须匹配。

答案 1 :(得分:1)

根本不要致电self.tableView.reloadData()。 beginUpdate和endUpdate部分应该足够了。

更新: 此外,请记住beginUpdate endUpdate块中的insert the new section