Swift &引用;可选类型的值';字符串?';没有打开包装;你是想用'';还是''&引用;

Swift &引用;可选类型的值';字符串?';没有打开包装;你是想用'';还是''&引用;,swift,compiler-errors,unwrap,Swift,Compiler Errors,Unwrap,我学习iOS或Swift的时间不长。随着最新的一次Xcode更新,我在电脑上制作的许多应用现在似乎都使用了过时的语法 Xcode通过将其转换为新语法来告诉我们,但这通常不能解决任何问题,我遇到了一个新问题。下面是我在语法转换后制作的第一个应用之一的代码。我得到一个错误,说: 可选类型“字符串”的值未展开;你是想用 '!' 还是“?” 我知道这一定很简单,但我不知道如何解决它。这是我的密码: @IBAction func findAge(sender: AnyObject) { var e

我学习iOS或Swift的时间不长。随着最新的一次Xcode更新,我在电脑上制作的许多应用现在似乎都使用了过时的语法

Xcode通过将其转换为新语法来告诉我们,但这通常不能解决任何问题,我遇到了一个新问题。下面是我在语法转换后制作的第一个应用之一的代码。我得到一个错误,说:

可选类型“字符串”的值未展开;你是想用 '!' 还是“?”

我知道这一定很简单,但我不知道如何解决它。这是我的密码:

@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"
    }
}  

文本标签的
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需要不同的语法

谢谢你的回复!知道不同的做事方法也是很有用的