如何从数组中随机抽取项目在Swift中?
我试图从数组中拉出一个随机项目。 当我跑,它拉近一个随机项目和给我这个错误“EXC_BAD_INSTRUCTION”大约50/50。 任何想法发生了什么?
现在我的代码如下所示: BEFORE Solution
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似乎是一个不好的例外,抛出一个边界错误,但这似乎是你得到的。
- MPMusicPlayerController不张贴通知?
- 架构arm64的未定义符号:“_OBJC_CLASS _ $ _ PayTabCardReaderViewController”,引用自:ViewController.o中的objc-class-ref