我正在尝试转换取自 UITextField 的数字,我认为它实际上是字符串,并将它们转换为 Float,以便我可以将它们相乘。
我有两个 UITextfield
,声明如下:
@IBOutlet var wage: UITextField
@IBOutlet var hour: UITextField
当用户按下 UIButton 时,我想计算用户赚取的工资,但我不能,因为我需要先将它们转换为 float ,然后才能使用它们。
我知道如何通过这样做将它们转换为整数:
var wageConversion:Int = 0
wageConversion = wage.text.toInt()!
但是,我不知道如何将它们转换为 float 。
最佳答案
swift 2.0+
现在有了 Swift 2.0,您只需使用 Float(Wage.text)
即可返回 Float?
类型。比下面只返回 0
的解决方案更清晰。
如果出于某种原因您想要一个 0
值作为无效的 Float
,您可以使用 Float(Wage.text) ?? 0
如果它不是有效的 Float
,它将返回 0
。
旧解决方案
处理这个问题的最好方法是直接转换:
var WageConversion = (Wage.text as NSString).floatValue
我实际上创建了一个扩展
来更好地使用它:
extension String {
var floatValue: Float {
return (self as NSString).floatValue
}
}
现在您只需调用 var WageConversion = Wage.text.floatValue
并允许扩展程序为您处理桥接!
这是一个很好的实现,因为它可以处理实际的 float (使用 .
输入)并且还有助于防止用户将文本复制到您的输入字段中 (12p.34
) >,甚至 12.12.41
)。
显然,如果 Apple 确实向 Swift 添加了一个 floatValue
,这将抛出一个异常,但同时它可能会很好。如果他们稍后添加它,那么修改代码所需要做的就是删除扩展,一切都会无缝运行,因为您已经调用了 .floatValue
!
此外,变量和常量应该以小写开头(包括IBOutlets
)
关于string - 在 Swift 中将字符串转换为 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24085665/