斯威夫特给人可选(3),而不是3 .toInt

问题描述:

试图从现场拉数量和不断收到可选(数量),而不是数量斯威夫特给人可选(3),而不是3 .toInt

@IBOutlet weak var years: UITextField! 

@IBAction func calculateYear(sender: AnyObject) { 

    var a = years.text.toInt() 
    println(a) 
} 

如果3是在该领域得到Optional(3)

如果我使用years.text我得到正确的输出,但它是一个字符串,我可以使用它。

使用的Xcode 6.1

+1

你对此感到惊讶吗?看看头文件:'func toInt() - > Int?'这是一个可选的。问题是什么? – matt 2014-11-03 16:32:48

这是因为该toInt()方法返回一个可选的,以考虑到情况下,当字符串是无法转换为一个整数。

只是把在一个可选的绑定:

if let a = a { 
    println(a) 
} 

toInt()返回一个可选的,因为谈话的整数可能会失败。考虑用户输入非数字的情况。当用户输入“Blah”时,您希望返回什么toInt()

您需要有条件解开可选

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

我也发现被迫改变的展开!也工作得很好。感谢所有想要帮助的人。

+0

这会让用户很容易崩溃你的应用。该字段和kaboom中的任何非整数文本条目。 – 2014-11-03 19:35:36