use*_*314 2 double int type-conversion char swift
显然,swift没有Isnumber()函数.我知道整数是string.toInt().但是Double怎么样?我还发现有人写了一个toDouble()但它没有编译(NSNumber?没有名为doubleValue的成员)我猜它是因为不支持可选类型?
extension String {
func toDouble() -> Double? {
var formatter = NSNumberFormatter()
let number = formatter.numberFromString(self)
if number == nil {
return nil
}
return number.doubleValue
}
}
Run Code Online (Sandbox Code Playgroud)
你几乎就在那里 - NSNumberFormatter返回一个可选的NSNumber,它有一个doubleValue属性.你只需要NSNumber妥善解开:
extension String {
func toDouble() -> Double? {
enum F {
static let formatter = NSNumberFormatter()
}
if let number = F.formatter.numberFromString(self) {
return number.doubleValue
}
return nil
}
}
"12.345".toDouble() // 12.345
"12345".toDouble() // 12345.0
"asdf".toDouble() // nil
Run Code Online (Sandbox Code Playgroud)