我有一个An数组,它是表视图中的一个Sections数组。 我有另一个包含数组的数组。 我正确地在桌面视图上显示它,但每次我想删除它时,我都会收到错误。 我想删除数组中数组内的确切项。 这是我到目前为止所得到的:
class ViewController: UIViewController, UITableViewDelegate {
@IBOutlet var tableView: UITableView!
var eachSection = ["a","ss","dd","heyyyyyy","3"]
var eachStep = [["z","zz"],["x","xx"],["c","cc","ccc"],["r","rr","rrr","rrrr"],["o"]]
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return eachSection.count
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
let sectionString = Array(eachStep)[section]
return sectionString.count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath)
// Configure the cell...
let sectionString = Array(eachStep)[indexPath.section]
cell.textLabel?.text = sectionString[indexPath.row]
print(sectionString)
return cell
}
func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
let sectionString = eachSection[section]
return sectionString
}
func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {
let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath)
if (editingStyle == UITableViewCellEditingStyle.Delete) {
var sectionString = Array(eachStep)[indexPath.section]
sectionString.removeAtIndex(indexPath.row)
tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Automatic)
}
}
}
这是我得到的错误:
由于未捕获的异常而终止应用 'NSInternalInconsistencyException',原因:'无效更新:无效 第0节中的行数。包含在中的行数 更新后的现有部分(2)必须等于数量 更新前的该部分中包含的行(2),加号或减号 从该部分插入或删除的行数(插入0, 删除1)加上或减去移入或移出的行数 该部分(0移入,0移出)
答案 0 :(得分:2)
此错误包含您的问题的答案。
由于未捕获的异常而终止应用 ' NSInternalInconsistencyException',原因:'无效更新:无效 第0节中的行数。包含在中的行数 更新后的现有部分(2)必须等于数量 更新前的该部分中包含的行(2),加号或减号 从该部分插入或删除的行数(插入0, 删除1)加上或减去移入或移出的行数 该部分(0移入,0移出)。
仔细看看你在做什么。
您从一个不使用数据源的数组中删除项目。
var sectionString = Array(eachStep)[indexPath.section]
sectionString.removeAtIndex(indexPath.row)
试试这个:
eachStep[indexPath.section].removeAtIndex(indexPath.row)