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

时间:2014-06-06 19:50:31

标签: ios swift exc-bad-instruction

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

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

1 个答案:

答案 0 :(得分:6)

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

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

EXC_BAD_INSTRUCTION似乎是一个抛出边界错误的错误例外,但这似乎就是你得到的。