删除数组中的项目,在Swift中的另一个数组中

时间:2016-03-25 11:45:10

标签: iphone arrays swift

我有一个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移出)

1 个答案:

答案 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)