对于我的应用程序,我需要将String转换为double,因为我必须为我的应用程序创建一个CLLocationObject,因此我需要那些双打。 因此我尝试了这个:
let lat = (cityObject.lat as! NSString).doubleValue
如果我打印普通字符串,我会得到以下内容:
一些("可选(52.523553)")一些("可选(13.403783)")
如果我打印双倍值,我会得到以下内容:
0.0 0.0
答案 0 :(得分:2)
请尝试:
extension String {
func toDouble() -> Double? {
return NumberFormatter().number(from: self)?.doubleValue
}
}
您可以这样访问:
var myString = "1.2"
var myDouble = myString.toDouble()
您可以删除以下选项:
if let data:NSDictionary = snap.value as! NSDictionary, let lat = data.value(forKey: "lat"),let lng = data.value(forKey: "lng") {
//then use thes let long to convert in Double
let latValue = lat.toDouble()
let lngValue = lng.toDouble()
}
答案 1 :(得分:1)
Double
有一个可用的初始化程序,它接受String
并返回一个可选的Double?
,因为很明显并非所有String
都是有效的Double
。这意味着你需要打开结果:
guard let value = Double("1.0") else {
print("Not a valid Double")
}
print(value)
答案 2 :(得分:-2)
请尝试以下一项,它将完美运行
扩展字符串{
var toDoubleVal: Double {
return Double(self) ?? 0.0
}
}