Swift donnant Optionnel (3) au lieu de 3 pour .toInt

Essayer de tirer un nombre d'un champ et continuer à get optionnel (nombre) au lieu du nombre

@IBOutlet weak var years: UITextField! @IBAction func calculateYear(sender: AnyObject) { var a = years.text.toInt() println(a) } 

si 3 est sur le terrain en Optional(3)

si j'utilise years.text j'obtiens la bonne sortie mais c'est une string et je peux travailler avec.

en utilisant Xcode 6.1

Cela se produit car la méthode toInt() renvoie une option, pour rendre count du cas où la string n'est pas convertible en integer.

Mettez simplement cela dans une binding optionnelle:

 if let a = a { println(a) } 

toInt() renvoie un optionnel car la conversation avec un entier peut échouer. Considérons le cas où l'user entre quelque chose d'autre qu'un nombre. Lorsque l'user entre "Blah", qu'est-ce que vous attendez toInt() pour revenir?

Vous devez conditionner l'option facultative

 if let a = years.text.toInt() { println(a) } 

J'ai aussi trouvé le déballage forcé en changeant un à un! travaillé aussi bien. merci à tous ceux qui ont essayé d'aider.