Тип выражения ошибки ‘Строка @lvalue?’ неоднозначен без дополнительного контекста

#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. Пожалуйста, в следующий раз предоставьте объяснение, а не просто ответ.