2014-06-06 46 views
2

我想從數組中拉出一個隨機項。當我運行時,它拉動一個隨機項目並給我這個錯誤「EXC_BAD_INSTRUCTION」之間約50/50。任何想法發生了什麼?如何從Swift中的數組中抽取任意項?

現在我的代碼看起來是這樣的:BEFORE解決方案

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 
} 

這是我現在使用什麼,似乎是working.Thanks大家幫助。

+0

你能夠確定'randomIndex'的哪些值有效,哪些返回'EXC_BAD_INSTRUCTION'? – admdrew

+0

只是似乎是隨機的。它有時會起作用,而其他時候則不起作用。 –

+0

哪一行導致錯誤?記錄randomIndex。 – zaph

回答

6

arc4random可以自negative % positive = negative返回這將導致您的問題負數一個更好的辦法是使用arc4random_uniform

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

EXC_BAD_INSTRUCTION似乎是一個不好的例外扔在一個邊界錯誤,但這似乎是你得到什麼。

+0

當我嘗試使用arc4random_uniform(cardArray.count)時,出現一個錯誤,說N SNumber不能被髮送到UInt32。 –

+1

更新了必要的演員表 –

相關問題