我有数组(coordinatesArray
)数据,其中包含双重值,如下所示。
(
"-61.4149691",
"42.9572076"
)
(
"-61.4126004",
"42.9572026"
)
(
"-61.476674304",
"42.9572032"
)
这是mapData
(
"-61.4149691",
"42.9572076"
)
因此,我采用循环将每个索引数据转换为纬度和经度,转换为double。
if let coordinatesArray = geoMetrys.value(forKey: "coordinates") as? NSArray {
for mapData in coordinatesArray {
print(mapData)
let latitude = (mapData[0] as NSString).doubleValue
let longitude = (mapData[1] as NSString).doubleValue
var coordinatesToAppend: CLLocationCoordinate2D? = [latitude, longitude]
var polyline = MKPolyline(coordinates: &coordinatesToAppend!, count: coordinatesArray.count)
mapView.add(polyline)
但是,它在编译时间时显示错误。
`Type 'Any' has no subscript members` for following lines
let latitude = (mapData[0] as NSString).doubleValue
let longitude = (mapData[1] as NSString).doubleValue
我有一个数组,我有值的数据作为纬度和经度。 所以,我试图在mapview中使用这些值绘制折线。
有人能建议我在哪里做不到这个吗?
答案 0 :(得分:0)
在您的代码中,行
if let coordinatesArray = geoMetrys.value(forKey: "coordinates") as? NSArray
返回类型为Any
的数组(即[Any]
)。之后,当你使用for循环
for mapData in coordinatesArray
基本上是循环遍历Any
数组,其中,在每次迭代中,项目(类型Any
)都被分配给mapData
。现在,如果此mapData
是一个数组本身,则必须将其明确指定为
if let dataArray = mapData as? NSArray {
let latitude = (dataArray[0] as NSString).doubleValue
let longitude = (dataArray[1] as NSString).doubleValue
}