如何在Swift中从数组中提取随机项?

Jus*_*ral 2 ios exc-bad-instruction swift

我试图从数组中拉出一个随机项.当我运行时,在拉随机项并给我这个错误"EXC_BAD_INSTRUCTION"之间大约50/50.知道发生了什么事吗?

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

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

    cardArray.removeAtIndex(randomIndex)

    return randomCard
}
Run Code Online (Sandbox Code Playgroud)

   func randomCard() -> Card {

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

    cardArray.removeAtIndex(randomIndex.hashValue)

    return randomCard
}
Run Code Online (Sandbox Code Playgroud)

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

Dav*_*rry 6

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

let randomIndex = arc4random_uniform(UInt32(cardArray.count))
Run Code Online (Sandbox Code Playgroud)

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