Swift exc_bad_指令(代码=exc_i386_invop,子代码=0x0)

Swift exc_bad_指令(代码=exc_i386_invop,子代码=0x0),swift,Swift,代码: 在哪些设备/模拟器上会失败?崩溃是否仅发生在32位设备上?例如,如果valueLeft-amountOfValues-i为负数,您将崩溃。@64位和32位设备上的MattGibsondevices@matt我已经检查过了,你是对的!但是我如何解决这个问题呢?一个与问题无关的评论。var amountOfValues=4正在创建一个新变量,然后立即丢弃该变量。如果您希望能够重新分配amountOfValues,请将var放入函数签名:func getRandomValuesvar amou

代码:


在哪些设备/模拟器上会失败?崩溃是否仅发生在32位设备上?例如,如果valueLeft-amountOfValues-i为负数,您将崩溃。@64位和32位设备上的MattGibsondevices@matt我已经检查过了,你是对的!但是我如何解决这个问题呢?一个与问题无关的评论。var amountOfValues=4正在创建一个新变量,然后立即丢弃该变量。如果您希望能够重新分配amountOfValues,请将var放入函数签名:func getRandomValuesvar amountOfValues:Int,totalAmount:Int->[Int]?{。
    func getRandomValues(amountOfValues:Int, totalAmount:Int) -> [Int]?{
    if amountOfValues < 1{
        var amountOfValues = 4
    }

    if totalAmount < 1{
        return nil
    }
    var values:[Int] = []
    var valueLeft = totalAmount

    for i in 0..<amountOfValues{

        if i == amountOfValues - 1{
            values.append(valueLeft)
            break
        }
        var value = Int(arc4random_uniform(UInt32(valueLeft - (amountOfValues - i))) + 1)
        valueLeft -= value
        if(value != 0){
            values.append(value)
        }
    }

    BtnValues = values

    return values
}
--------->var value = Int(arc4random_uniform(UInt32(valueLeft - (amountOfValues - i))))