尝试在特定部分Swift

时间:2017-12-12 13:29:26

标签: ios swift uitableview

我有tableview,在获得新数据后,我想更新一个特定的部分。所以我更新了相应的模型。我在该部分中的行的初始值为3,现在假设为5.我做了以下操作:

self?.addOperations(items, completion: {(pathes) in
  DispatchQueue.main.async {
    print("output pathes - \(pathes)")
    for (index, item) in (self?.arrValues.enumerated())!{
      print("operations count - \(item.operations.count), section - \(index)")
    }
    self?.tableView.beginUpdates()
    self?.tableView.insertRows(at: pathes, with: UITableViewRowAnimation.bottom)
    self?.tableView.endUpdates()
  }
})

添加操作是加载新数据的函数,将其添加到arrValues(包含单元格数据模型的数组),然后在完成块传递IndexPathObject的数组中。

该代码崩溃了我的应用。在日志中我可以看到:

  

输出pathes - [[1,1]]
  操作计数 - 7,部分 - 0
  操作计数 - 5,部分 - 1

在我的第二部分中,我现在有5个值。输出IndexPath表示我在第(1)节中有2行。但错误说:

  

由于未捕获的异常终止应用程序' NSInternalInconsistencyException',原因:'无效更新:第1部分中的无效行数。更新后现有部分中包含的行数(5)必须等于更新前的该部分中包含的行数(3),加上或减去从该部分插入或删除的行数(插入1个,删除0个),加上或减去移入的行数或者超出该部分(0移入,0移出)。'

一切都应该奏效。为什么没有它以及如何解决它?

我的委托方法声明如下:

func numberOfSections(in tableView: UITableView) -> Int {
  return arrValues.count
}

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
  return arrValues[section].operations.count
}

0 个答案:

没有答案