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

arc4randomnegative % positive = negative より良いアプローチは使用することですarc4random_uniform

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

EXC_BAD_INSTRUCTION は、境界エラーでスローする悪い例外のように見えますが、それはあなたが得るもののようです。

于 2014-06-06T21:45:10.983 に答える