10

我学习 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"
    }
}  
4

2 回答 2

18

文本标签的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"
}
于 2015-10-01T16:32:05.783 回答
0

我试过了。但它还是说了同样的话。我现在已经设法修复它。我所做的只是改变了模拟器显示的设备。只是碰巧我让它工作了。也许是因为我正在创建一个 iOS 应用程序,而 iPad 需要不同的语法。

感谢你的回复!了解做某事的不同方法也是有用的方法。

于 2015-10-02T15:15:49.353 回答