#ios #swift #xcode
#iOS #swift #xcode
Вопрос:
Я постоянно получаю сообщение об ошибке, и оно не исчезает, даже когда я пытаюсь ввести текстовое поле ввода. Это мой код:
@IBOutlet weak var fingerNumbersInputField: UITextField!
@IBAction func guessButton(_ sender: Any) {
let randomFingers = arc4random_uniform(6)
if randomFingers == Int(fingerNumbersInputField.text!) {
}
}
@IBOutlet weak var resultField: UILabel!
И это ошибка, которую я получаю в Xcode:
Скриншот ошибки в Xcode НАЖМИТЕ ЗДЕСЬ
Тип выражения ‘Строка @lvalue?’ неоднозначен без дополнительного контекста
Что не так с этим кодом? Пожалуйста, помогите. Спасибо.
Ответ №1:
arc4random_uniform(6)
возвращайте UInt32
и позже вы пытаетесь сравнить UInt32
и Int?
, это слишком много для компилятора.
Если вы используете современный случайный api типа: Int.random(0..<6)
все должно быть хорошо
let randomFingers = Int.random(in: 0..<6)
if randomFingers == Int(fingerNumbersInputField.text!) { }
Комментарии:
1. Упс! Я не знал, что он возвращает «UInt32», я просто ожидал «Int». Я следую курсу по Udemy, и парень делает точно так же, как и я. Поскольку Swift — это современный язык, я ожидал чего-то простого вроде «Int.random», но я просто следовал курсу как есть.
2. @HankMoody это было добавлено в последней версии. Возможно, ваш курс немного устарел. Пока это на swift 4 , все должно быть в порядке.
3. Бог знает, что бы я сделал, если бы не было SOF.
Ответ №2:
Вам нужно
if randomFingers == Int(fingerNumbersInputField.text!)! {
}
или savely
if let value = Int(fingerNumbersInputField.text!) , value == randomFingers {
/////
}
Комментарии:
1. Пожалуйста, в следующий раз предоставьте объяснение, а не просто ответ.