"Значение необязательного типа 'String?' не развернутый, ты хотел использовать '!' или же '?'?"

Я не изучал iOS или Swift очень долго. С одним из последних обновлений XCode многие приложения, которые я сделал на моем компьютере, теперь, похоже, используют устаревший синтаксис.

Xcode говорит нам о преобразовании его в новый синтаксис, но часто это ничего не решает, и у меня возникает новая проблема. Вот код для одного из первых приложений, которые я сделал после преобразования синтаксиса. Я получаю сообщение об ошибке:

Значение необязательного типа 'String?' не развернутый; ты хотел использовать '!' или же '?'?

Я знаю, что это должно быть очень просто, но я не знаю, как это исправить. Вот мой код:

@IBAction func findAge(sender: AnyObject) {
    var enteredAge = Int(age.text)
    if enteredAge != nil {
        var catYears = enteredAge! * 7
        resultLabel.text = "Your cat is \(catYears) in cat years"
    } else {
        resultLabel.text = "Please enter a whole number"
    }
}  

2 ответа

text Свойство текстовой метки является необязательным, его необходимо развернуть перед использованием.

var enteredAge = Int(age.text!)

Даже лучше:

if let text = age.text, let enteredAge = Int(text) {
    let catYears = enteredAge * 7
    resultLabel.text = "Your cat is \(catYears) in cat years"
} else {
    resultLabel.text = "Please enter a whole number"
}

Я попробовал это. Но все равно сказано то же самое. Мне удалось это исправить сейчас. Все, что я сделал, это поменял устройство, на котором показывал симулятор. Просто по счастливой случайности, у меня все заработало. Может быть, это потому, что я создавал приложение для iOS, а iPad требовал другого синтаксиса.

Спасибо за ваш ответ! Также полезно знать разные способы сделать что-то.

Другие вопросы по тегам