integer - Swift convertir UInt a Int
uint32 (4)
Más simple que esto, imposible:
Int(myUInteger)
Tengo esta expresión que devuelve un UInt32
:
let randomLetterNumber = arc4random()%26
Quiero poder usar el número en esta declaración if:
if letters.count > randomLetterNumber{
var randomLetter = letters[randomLetterNumber]
}
Este problema es que la consola me está dando esto.
Playground execution failed: error: <REPL>:11:18: error: could not find an overload for ''>'' that accepts the supplied arguments
if letters.count > randomLetterNumber{
~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~
El problema es que UInt32
no se puede comparar con un Int
. Quiero lanzar randomLetterNumber
a un Int
. Yo he tratado:
let randomLetterUNumber : Int = arc4random()%26
let randomLetterUNumber = arc4random()%26 as Int
Estas dos causas could not find an overload for ''%'' that accepts the supplied arguments.
¿Cómo puedo emitir el valor o usarlo en la sentencia if?
Solo crea un nuevo int con él
let newRandom: Int = Int(randomLetterNumber)
if letters.count > newRandom {
var randomLetter = letters[newRandom]
}
o si nunca te importa el UInt32, puedes crear un Int inmediatamente:
let randomLetterNumber = Int(arc4random() % 26)
Tu puedes hacer
let u: UInt32 = 0x1234abcd
let s: Int32 = Int32(bitPattern: u)
Int(arc4random_uniform(26))
hace dos cosas, una elimina los resultados negativos de su método actual y la segunda debe crear correctamente un Int del resultado.