2016-05-06 37 views
-2

Ich mache eine Vermutung das Kartenspiel und ich bekomme diesen seltsamen Fehler, den ich nicht beheben kann, wenn ich eine Zufallszahl für die Symbole und die Kartennummern erstelle. Dies ist der Fehler:Warum erhalte ich diesen Fehler und wie kann ich ihn beheben? Swift

An image of the error

let cardSymbols = ["Spades", "Hearts", "Diamonds", "Clubs"] 
let numbers = ["Ace", "2", "3", "4", "5", "6", "7", "8", "9", "10", "Jack", "Queen", "King"] 

func getRandomCard() { 

    var correctSymbolNumber = arc4random_uniform(UInt32(cardSymbols.count - 1)) 
    var correctNumberNumber = arc4random_uniform(UInt32(numbers.count - 1)) 

    var correctSymbol = cardSymbols[correctSymbolNumber] 
    var correctNumber = numbers[correctNumberNumber] 

} 

Wie kann ich dieses Problem beheben? Ich weiß, das Problem ist mit meinem arc4random ... aber wie kann ich es beheben.

Antwort

1

Sie müssen das Ergebnis von arc4random_uniform in einen schnellen Int ändern, derzeit ist es ein UInt32, den Sie nicht für ein schnelles Wörterbuch oder Array verwenden können.

So:

var correctSymbolNumber = Int(arc4random_uniform(UInt32(cardSymbols.count - 1))) 
var correctNumberNumber = Int(arc4random_uniform(UInt32(numbers.count - 1))) 

var correctSymbol = cardSymbols[correctSymbolNumber] 
var correctNumber = numbers[correctNumberNumber] 
0

Sie haben den Wert von arc4random_uniform UInt32 auf Int zu ändern. wie Sie das sehen kann, ist der Prototyp arc4random_uniform Funktion, die UInt32 zurück func arc4random_uniform(_: UInt32) -> UInt32

var correctSymbolNumber = Int(arc4random_uniform(UInt32(cardSymbols.count - 1))) 
var correctNumberNumber = Int(arc4random_uniform(UInt32(numbers.count - 1))) 

auch nicht vergessen, die die correctSymbolNumber und correctNumberNumber Werte auszupacken.