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 關注
- 580 瀏覽
添加回答
舉報