Ответ 1
Int(arc4random_uniform(26))
выполняет две вещи: одна исключает отрицательные результаты из вашего текущего метода, а вторая должна правильно создавать 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?
Int(arc4random_uniform(26))
выполняет две вещи: одна исключает отрицательные результаты из вашего текущего метода, а вторая должна правильно создавать Int из результата.
Просто создайте новый int с ним
let newRandom: Int = Int(randomLetterNumber)
if letters.count > newRandom {
var randomLetter = letters[newRandom]
}
или если вы никогда не заботитесь о UInt32, вы можете просто создать Int немедленно:
let randomLetterNumber = Int(arc4random() % 26)
Проще, чем это невозможно:
UInt(myInteger)
Вы можете сделать
let u: UInt32 = 0x1234abcd
let s: Int32 = Int32(bitPattern: u)