Подтвердить что ты не робот

Swift конвертировать UInt в Int

У меня есть это выражение, которое возвращает UInt32:

let randomLetterNumber = arc4random()%26

Я хочу использовать число в этой инструкции if:

if letters.count > randomLetterNumber{
    var randomLetter = letters[randomLetterNumber]
}

Эта проблема заключается в том, что консоль предоставляет мне этот

Playground execution failed: error: <REPL>:11:18: error: could not find an overload for '>' that accepts the supplied arguments
if letters.count > randomLetterNumber{
   ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~

Проблема заключается в том, что UInt32 нельзя сравнивать с Int. Я хочу передать randomLetterNumber в Int. Я пробовал:

let randomLetterUNumber : Int = arc4random()%26
let randomLetterUNumber = arc4random()%26 as Int

Оба они вызывают could not find an overload for '%' that accepts the supplied arguments.

Как я могу присвоить значение или использовать его в инструкции if?

4b9b3361

Ответ 1

Int(arc4random_uniform(26)) выполняет две вещи: одна исключает отрицательные результаты из вашего текущего метода, а вторая должна правильно создавать Int из результата.

Ответ 2

Просто создайте новый int с ним

let newRandom: Int = Int(randomLetterNumber)
if letters.count > newRandom {
    var randomLetter = letters[newRandom]
}

или если вы никогда не заботитесь о UInt32, вы можете просто создать Int немедленно:

let randomLetterNumber = Int(arc4random() % 26)

Ответ 3

Проще, чем это невозможно:

UInt(myInteger)

Ответ 4

Вы можете сделать

let u: UInt32 = 0x1234abcd
let s: Int32 = Int32(bitPattern: u)