为什么我在 swift 中得到 EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)

Why do I get the EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0) in swift

我才进入 swift 两周所以我的代码将是非常基础的而不是完美的我正在尝试解决这个问题“创建一个 returns 最小移除次数的函数数组中所有元素的总和。” 像这样 minimumRemovals([1, 2, 3, 4, 5]) ➞ 1

minimumRemovals([5, 7, 9, 11]) ➞ 0

minimumRemovals([5, 7, 9, 12]) ➞ 1

但我一直收到错误 EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)

这是我的代码

'''

func minimumRemovals( arr: [Int]) -> Int {
    var odds = 0
    var evens = 0
    for i in arr {
        if arr[i] % 2 == 0 {
            evens += 1
        } else {
            odds += 1
        }
    }
    if odds == evens {
        return 1
    } else {
        return 0
    }
}
print(minimumRemovals(arr: [1,2,3,4,5]))
'''

for .. in .. in Swift 不会遍历索引。它迭代实际的数组元素。因此 i 是元素,而不是索引。

使用 if i % 2 == 0 将解决您的问题。