首页 > 解决方案 > 无法强制将“[String]”类型的值转换为“NSString”类型

问题描述

我有一个输出字符串:

LATITUDE = [String]()
LATITUDE = ["41.87194", "33.4941704", "46.8796822", "31.9685988", "45.253783"]
var custlatt = (LATITUDE as NSString).doubleValue

我正在尝试将纬度坐标插入到下面的代码中:

var markerDict: [Int: GMSMarker] = [:]
for i in 0...(POST_COUNT - 1){
                markerDict[i] = GMSMarker()
                markerDict[i]?.position = CLLocationCoordinate2D(latitude:custlatt[i], longitude: custlong[i])
                markerDict[i]?.title = ""
                markerDict[i]?.icon = UIImage(named: "Pin Red Small")
                markerDict[i]?.snippet = ""
                markerDict[i]?.map = mapView

对于 var custlatt,我收到错误“无法将类型 '[String]' 的值转换为强制类型的 'NSString'”

非常感谢任何帮助,我是 swift 新手,我已经被困了很长一段时间。提前致谢!

标签: arraysswiftstring

解决方案


您需要在 for 循环内进行强制转换,您不能将 anArray<String>转换为NSString.

此外,不应通过将 a 转换String为 a ,而应通过初始化程序。DoubleNSStringDouble

您还应该遵守 Swift 命名约定,即变量名称的 lowerCamelCase。

let latitudes = ["41.87194", "33.4941704", "46.8796822", "31.9685988", "45.253783"].compactMap { Double($0) }
let longitudes = ["42", "33", "23", "45", "6"].compactMap { Double($0) } 

var markerDict: [Int: GMSMarker] = [:]
for i in 0..<postCount {
    let marker = GMSMarker()
    market = GMSMarker()
    marker.position = CLLocationCoordinate2D(latitude:latitudes[i], longitude: longitudes[i])
    marker.title = ""
    marker.icon = UIImage(named: "Pin Red Small")
    marker.snippet = ""
    marker.map = mapView
    markerDict[i] = marker
}

推荐阅读