Swift convertir UInt en Int
, j'ai cette expression qui retourne un UInt32
:
let randomLetterNumber = arc4random()%26
Je veux pouvoir utiliser le nombre dans cette instruction if:
if letters.count > randomLetterNumber{
var randomLetter = letters[randomLetterNumber]
}
Ce problème est que la console me donne ceci
Playground execution failed: error: <REPL>:11:18: error: could not find an overload for '>' that accepts the supplied arguments
if letters.count > randomLetterNumber{
~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~
Le problème est que UInt32
ne peut pas être comparé à un Int
. Je veux lancer randomLetterNumber
à un Int
. J'ai essayé:
let randomLetterUNumber : Int = arc4random()%26
let randomLetterUNumber = arc4random()%26 as Int
Ces deux causes could not find an overload for '%' that accepts the supplied arguments.
Comment puis-je lancer la valeur ou l'utiliser dans l'instruction if?
4 réponses
Int(arc4random_uniform(26))
fait deux choses, l'une élimine les résultats négatifs de votre méthode actuelle et la seconde devrait créer correctement un Int à partir du résultat.
Créez simplement un nouvel int avec
let newRandom: Int = Int(randomLetterNumber)
if letters.count > newRandom {
var randomLetter = letters[newRandom]
}
Ou si vous ne vous souciez jamais de L'UInt32, vous pouvez simplement créer un Int immédiatement:
let randomLetterNumber = Int(arc4random() % 26)
Vous pouvez faire
let u: UInt32 = 0x1234abcd
let s: Int32 = Int32(bitPattern: u)