integer swift uint32

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.