2015-10-01 6 views
5

Ich habe nicht sehr lange iOS oder Swift studiert. Mit einem der neuesten Xcode-Updates scheinen viele der Apps, die ich auf meinem Computer erstellt habe, jetzt veraltete Syntax zu verwenden."Wert des optionalen Typs 'String?' nicht ausgepackt, wollten Sie '!' oder '?' "

Xcode spricht uns durch Umwandlung in neue Syntax, aber oft löst das nichts und ich habe ein neues Problem. Hier ist Code für eine der ersten App, die ich gemacht habe, nachdem die Syntax konvertiert wurde. Ich erhalte eine Fehlermeldung:

Wert des optionalen Typs 'String?' nicht ausgepackt; Meinst du, '!' oder '?' ?

Ich weiß, das muss wirklich einfach sein, aber ich weiß nicht, wie ich es beheben kann. Hier ist mein 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" 
    } 
} 

Antwort

10

Die text Eigenschaft eines Textbeschriftung ist eine optionale, haben Sie es auspacken, bevor es zu benutzen.

var enteredAge = Int(age.text!) 

Noch besser:

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

habe ich versucht. Aber es sagte immer noch dasselbe. Ich habe es geschafft, es jetzt zu beheben. Alles, was ich getan habe, war das Gerät zu wechseln, in dem der Simulator angezeigt wurde. Nur durch Zufall, ich habe es funktioniert. Vielleicht weil ich eine iOS-App erstellt habe und das iPad eine andere Syntax benötigt.

Vielen Dank für Ihre Antwort! Es ist auch nützlich, verschiedene Möglichkeiten zu kennen, etwas zu tun.