将NSNumber转换为Double(CLLocationDegrees)

时间:2017-10-14 02:44:02

标签: json swift double nsnumber cllocation

我正在尝试为地图上的注释添加经纬度。 我的数据是JSON类型

 "{\"lat\": 25.0437396, \"lng\": 121.5308224}"

我先把它转换成字典

["lat": 25.0437396, "lng": 121.5308224]

并使用字典中的值添加

var coordinate = CLLocationCoordinate2D()
let latNum = shopCoordinate["lat"] as! NSNumber
let lngNum = shopCoordinate["lng"] as! NSNumber
let lat = latNum as? Double
let lng = lngNum as? Double
coordinate.latitude = lat!
coordinate.longitude = lng!

但是Double类型值会变成这样,并且不会在地图上显示

25.043739599999999, 121.53082240000001

我无法将其转换为其他类型,因为CLLocationDegrees接受double类型。它让我疯狂。如果有人能给我任何建议,我真的很感激。

2 个答案:

答案 0 :(得分:0)

为什么不直接将其转换为Double

if let latNum = shopCoordinate["lat"] as? Double, let lngNum = shopCoordinate["lng"] as? Double {
    let coordinate = CLLocationCoordinate2D(latitude: latNum, longitude: lngNum)
}

答案 1 :(得分:0)

你快到了。您只需将数据转换为Double而不是NSNumber,如下所示:

var coordinate = CLLocationCoordinate2D()
let lat = shopCoordinate["lat"] as! Double
let lng = shopCoordinate["lng"] as! Double
coordinate.latitude = lat
coordinate.longitude = lng