无法将String转换为双Swift

时间:2018-04-17 19:35:31

标签: swift double

对于我的应用程序,我需要将String转换为double,因为我必须为我的应用程序创建一个CLLocationObject,因此我需要那些双打。 因此我尝试了这个:

 let lat = (cityObject.lat as! NSString).doubleValue

如果我打印普通字符串,我会得到以下内容:

  

一些("可选(52.523553)")一些("可选(13.403783)")

如果我打印双倍值,我会得到以下内容:

  

0.0 0.0

3 个答案:

答案 0 :(得分:2)

请尝试:

extension String {
    func toDouble() -> Double? {
        return NumberFormatter().number(from: self)?.doubleValue
    }
}
  

您可以这样访问:

var myString = "1.2"
var myDouble = myString.toDouble()

enter image description here

  

您可以删除以下选项:

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
}

}