斯威夫特给人可选(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
答
这是因为该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
你对此感到惊讶吗?看看头文件:'func toInt() - > Int?'这是一个可选的。问题是什么? – matt 2014-11-03 16:32:48