Swift为.toInt提供Optional(3)而不是3

尝试从字段中提取数字并继续获取可选(数字)而不是数字

@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) } 

我还发现通过改变一个强制解包! 工作也很好。 感谢所有试图帮助的人。