Swift - 执行被中断的原因是exc_bad_access多维数组

时间:2015-02-13 19:10:33

标签: ios arrays swift multidimensional-array exc-bad-access

学习编写swift代码,查看多维数组,想要遍历数组,撤销存储在第二列中的数学函数,然后将其第一列值添加到4个单独的数组(尚未创建),以便最后我将有4个数组,包含第一列的数字。

但是在线

 Function = array3D[index]

我收到错误:快速执行被中断原因exc_bad_access

有人可以帮忙吗?代码

var array3D: [[String]] = [["1", "+"], ["3", "-"], ["5", "x"], ["7", "/"]]
var arrayAdd = [""]
var arrayMinus = [""]
var arrayMultiple = [""]
var arrayDivide = [""]

var count = array3D.count
var countIsZero = false

if count != 0 {
    countIsZero = true
}

if countIsZero {
    for index in 0...count {
        var Function = ""
        Function = array3D[count][1]
        println(Function)
        switch Function {
            case "+": arrayAdd.append(array3D[count][0])
            case "-": arrayMinus.append(array3D[count][0])
            case "x": arrayMultiple.append(array3D[count][0])
            case "/": arrayDivide.append(array3D[count][0])
            default: ""
       }
    }  
}

3 个答案:

答案 0 :(得分:4)

count将为4,因为该数组包含四个元素。但是,索引是从零开始的,所以你应该这样做:

for index in 0...count-1

避免使用会导致异常的数字4进行索引。

答案 1 :(得分:2)

克劳斯说的是正确的。此外:

  • 您需要使用case确保每个count语句都不会超出范围。
  • 您有for index in 0...count声明,但我从未看到您使用index,只使用countindex将是从0开始计算的数字。
祝你好运,
凯尔

答案 2 :(得分:1)

Function = array3D[4]没有提及< - throw exc_bad_access

您的数组索引从0转到array3D.count - 1

您需要将for循环更改为以下内容:0..<count(与0...count-1相同)

for index in 0..<count {
...
}

同样在您的for循环中,您使用count代替index

在更正后的循环下方:

for index in 0..<count {
    var Function = ""
    Function = array3D[index][1]
    println(Function)
    switch Function {
        case "+": arrayAdd.append(array3D[index ][0])
        case "-": arrayMinus.append(array3D[index ][0])
        case "x": arrayMultiple.append(array3D[index ][0])
        case "/": arrayDivide.append(array3D[index ][0])
        default: ""
    }
}