代码之家  ›  专栏  ›  技术社区  ›  Satty

将NSNumber转换为Double(CLLocationDegrees)

  •  1
  • Satty  · 技术社区  · 8 年前

    我正在尝试将纬度和经度添加到地图上的注释中。 我的数据是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!
    

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

    25.043739599999999, 121.53082240000001
    

    我不能将其转换为其他类型,因为CLLocationDegrees接受双精度类型。这让我发疯。如果有人能给我任何建议,我将不胜感激。

    2 回复  |  直到 8 年前
        1
  •  0
  •   Rashwan L    8 年前

    为什么不简单地将其转换为 Double

    if let latNum = shopCoordinate["lat"] as? Double, let lngNum = shopCoordinate["lng"] as? Double {
        let coordinate = CLLocationCoordinate2D(latitude: latNum, longitude: lngNum)
    }
    
        2
  •  0
  •   Glenn Posadas    8 年前

    Double 而不是 NSNumber ,如下所示:

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