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
,只看到 count
。 index
就是从0开始向上数的数。
祝你好运,
凯尔
学习写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
,只看到count
。index
就是从0开始向上数的数。
祝你好运,
凯尔