3 回答
TA贡献2041条经验 获得超4个赞
迅捷2.0+
现在,在Swift 2.0中,您可以使用Float(Wage.text)返回Float?类型的方法。比下面返回的解决方案更清晰0。
如果出于某种原因想要一个0无效的值,则Float可以使用Float(Wage.text) ?? 0该值,如果无效则返回0该值Float。
旧解决方案
解决此问题的最佳方法是直接投射:
var WageConversion = (Wage.text as NSString).floatValue
我实际上也创建了一个extension更好地使用它的方法:
extension String {
var floatValue: Float {
return (self as NSString).floatValue
}
}
现在,您可以呼叫var WageConversion = Wage.text.floatValue并允许分机为您处理网桥!
这是一个很好的实现,因为它可以处理实际的浮点数(使用进行输入.),并且还有助于防止用户将文本复制到您的输入字段(12p.34或什至12.12.41)中。
显然,如果Apple确实floatValue在Swift 中添加了,则会抛出异常,但与此同时可能会很好。如果他们稍后添加它,那么只需修改扩展名,您只需要做的就是删除扩展名,一切将无缝进行,因为您已经在调用了.floatValue!
另外,变量和常量应以小写字母开头(包括IBOutlets)
TA贡献1817条经验 获得超6个赞
因为例如在世界的某些地区,使用逗号代替小数。最好创建一个NSNumberFormatter来将字符串转换为float。
let numberFormatter = NSNumberFormatter()
numberFormatter.numberStyle = NSNumberFormatterStyle.DecimalStyle
let number = numberFormatter.numberFromString(self.stringByTrimmingCharactersInSet(Wage.text))
TA贡献1824条经验 获得超6个赞
斯威夫特1
这是Paul Hegarty在2015年斯坦福大学CS193p课程上的表现:
wageConversion = NSNumberFormatter().numberFromString(wage.text!)!.floatValue
您甚至可以创建一个计算属性,而不必每次都这样做
var wageValue: Float {
get {
return NSNumberFormatter().numberFromString(wage.text!)!.floatValue
}
set {
wage.text = "\(newValue)"
}
}
- 3 回答
- 0 关注
- 541 浏览
添加回答
举报