我正在尝试从数组中拉出随机项。当我运行时,它在拉出一个随机项目与给我这个错误“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
}

这就是我现在正在使用的并且似乎正在运行。感谢大家的帮助。

最佳答案

arc4random可以返回负数,这会给您带来麻烦,因为negative % positive = negative更好的方法是使用arc4random_uniform

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

EXC_BAD_INSTRUCTION似乎是引发边界错误的坏异常,但这确实是您所得到的。

关于ios - 如何在Swift中从数组中拉出随机项?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24089631/

10-09 13:02