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

Swift - execution was interrupted reason exc_bad_access multidimensional array

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

不过在线

 Function = array3D[index]

我收到错误:swift 执行被中断原因 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: ""
       }
    }  
}

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

for index in 0...count-1

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

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: ""
    }
}

克劳斯说的是对的。另外:

  • 您需要使用 count 确保每个 case 语句都不会越界。
  • 你有 for index in 0...count 语句,但我从未看到你使用 index,只看到 countindex就是从0开始向上数的数。

祝你好运,
凯尔