“可选类型'String的值?'没打开;你的意思是用'!'要么 '?' ?”

时间:2015-10-01 16:27:17

标签: swift compiler-errors unwrap

我没有长时间研究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 个答案:

答案 0 :(得分:17)

文本标签的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"
}

答案 1 :(得分:1)

我试过了。但它仍然说同样的话。我现在设法解决了这个问题。我所做的就是更换模拟器所显示的设备。只是通过侥幸它我已经让它工作了。也许是因为我正在创建一个iOS应用程序而且iPad需要不同的语法。

感谢您的回复!知道不同的做事方式也是有用的方法。