-4

我有一个输出字符串:

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 新手,我已经被困了很长一段时间。提前致谢!

4

2 回答 2

0

您需要在 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
}
于 2020-11-25T09:59:17.937 回答
0

您不能将数组强制为单个值。但是根据代码,这无论如何都不是你想要的。

NSString转换为String的桥Double不迅速的

将字符串数组转换为双精度值数组的原生 Swift 方法是

let stringLatitudes = ["41.87194", "33.4941704", "46.8796822", "31.9685988", "45.253783"]
let latitudes = stringLatitudes.compactMap(Double.init)

而 for 循环也是objective-c-ish。在 Swift 中,有一个半开范围运算符 ( ..<) 可以避免-1减法。

for i in 0..<postCount { ...

注意:请根据命名约定命名变量 lowerCamelCase

于 2020-11-25T10:03:59.750 回答