[英]Swift - convert value from hashtable to Double
swift的新手,尝试了很多组合但无法通过。 我有一种方法可以通过[AnyHashable: Any]
获取参数列表
那里有 2 个纬度和经度值,它们的值也是字符串,我需要提取这些值并创建一个CLLocationCoordinate
这段代码:
let lat = Double(param["latitude"])
let lng = Double(param["longitude"])
let coordinate = CLLocationCoordinate2DMake(lat, lng)
lat 和 lng 的 let 存在编译错误
没有完全匹配调用初始化程序”我该怎么做?
您需要直接投射它
guard let lat = param["latitude"] as? Double ,
let lng = param["longitude"] as? Double else { return }
let coordinate = CLLocationCoordinate2DMake(lat, lng)
您的字典定义为[AnyHashable: Any]
。
键“纬度”和“经度”可能存在也可能不存在,在这些键中找到的值可以是任何类型。
如果您知道“纬度”和“经度”键的值将始终为双精度值,或者始终为字符串,您可以将转换编写为强制转换或强制转换,然后调用Double.init(_:String)
如果您的字典可以包含 String 值或 Double 值,您可以编写一个 function 来处理:
func returnCoordinate(param: [AnyHashable: Any]) -> CLLocationCoordinate2D? {
if let lat = param["latitude"] as? Double ,
let lng = param["longitude"] as? Double {
return CLLocationCoordinate2DMake(lat, lng)
} else if let latString = param["latitude"] as? String ,
let lngString = param["longitude"] as? String,
let lat = Double(latString),
let lng = Double(lngString)
{
return CLLocationCoordinate2DMake(lat, lng)
}
return nil
}
如果字典键不包含双精度或字符串,则 function 将返回 nil。 (如果一个键包含一个 Double 值而另一个键包含一个字符串,它也会失败,但这看起来很愚蠢。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.