“Value of optional type 'String?' not unwr

2020-07-06 03:12发布

I have not been studying iOS or Swift for very long. With one of the latest Xcode updates, many of the apps I have made on my computer now appear to be using obsolete syntax.

Xcode talks us through converting it to new syntax but often that does not solve anything and I have a new problem. Here is code for one of the first app I made after the syntax has been converted. I am getting an error saying:

Value of optional type 'String?' not unwrapped; did you mean to use '!' or '?' ?

I know this must be really simple but I don't know how to fix it. Here is my code:

@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条回答
The star\"
2楼-- · 2020-07-06 03:45

I tried that. But it still said the same thing. I have managed to fix it now. All I did was change device the simulator was displaying in. Just by fluke it I have got it working. Maybe it was because I was creating an iOS app and the iPad required different syntax.

Thank you for your reply! It is also ways useful to know different ways to do something.

查看更多
淡お忘
3楼-- · 2020-07-06 03:48

The text property of a text label is an optional, you have to unwrap it before using it.

var enteredAge = Int(age.text!)

Even better:

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"
}
查看更多
登录 后发表回答