出现这个问题有两种情况
第一种比如删除,那你在删除的时候 ,数据源必须删除。 如果你不删除数据源,那numberOfRowsInSection方法Array的长度是没有变化的。tablew刷新的时候就会检测数据源的长度和tablew显示的条目是不是一样的。如果不一样就抛出Assertion failure in这个异常。
tableView.beginUpdates()
Array.remove(at: indexPath.row)
tableView.deleteRows(at: [indexPath], with: .left)
tableView.endUpdates()
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return Array.count;
}
增加条目也是一样的,那你在增加的时候 ,数据源必须增加。 如果你不增加数据源,那numberOfRowsInSection方法Array的长度是没有变化的。tablew刷新的时候就会检测数据源的长度和tablew显示的条目是不是一样的。如果不一样就抛出Assertion failure in这个异常。
tableView.beginUpdates()
Array.append(xxx)
tableView.insertRows(at: [indexPath], with: .left)
tableView.endUpdates()
第二种情况 如果有多个分组,分组内的数据源为0了 ,分组也要删除。tablew会检测你数据源的分组和table上显示的分组是不是一样的。如果不一样就抛出Assertion failure in这个异常。
tableView.beginUpdates()
Array.remove(at: indexPath.row)
tableView.deleteRows(at: [indexPath], with: .left)
tableView.deleteSections(IndexSet.init(arrayLiteral: indexPath.section), with: .left)
tableView.endUpdates()