2

我正在尝试从数组中拉出一个随机项目。当我跑步时,它在拉一个随机项目和给我这个错误“EXC_BAD_INSTRUCTION”之间工作大约 50/50。知道发生了什么吗?

现在我的代码看起来像这样:之前的解决方案

   func randomCard() -> Card {
    let randomIndex = Int(arc4random()) % cardArray.count
    let randomCard = cardArray[randomIndex]

    cardArray.removeAtIndex(randomIndex)

    return randomCard
}

   func randomCard() -> Card {

    let randomIndex = arc4random_uniform(UInt32(cardArray.count))
    let randomCard = cardArray[randomIndex.hashValue]

    cardArray.removeAtIndex(randomIndex.hashValue)

    return randomCard
}

这就是我现在正在使用的,似乎正在工作。谢谢大家的帮助。

4

1 回答 1

6

arc4random可以返回负数,这会导致您出现问题,因为negative % positive = negative 更好的方法是使用arc4random_uniform

let randomIndex = arc4random_uniform(UInt32(cardArray.count))

EXC_BAD_INSTRUCTION 似乎是抛出边界错误的一个糟糕的异常,但这似乎就是你得到的。

于 2014-06-06T21:45:10.983 回答