簡體   English   中英

無法強制將“[String]”類型的值轉換為“NSString”類型

[英]Cannot convert value of type '[String]' to type 'NSString' in coercion

我有一個輸出字符串:

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 的新手,我已經被困了很長時間。 提前致謝!

您需要在 for 循環中進行強制轉換,您不能將Array<String>轉換為NSString

此外,不應通過NSStringString轉換為Double ,而應通過Double初始化程序。

您還應該遵守 Swift 命名約定,即變量名稱的小寫形式。

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
}

您不能將數組強制為單個值。 但是根據代碼,這無論如何都不是你想要的。

轉換為NSString以將String轉換為Double的橋是unswifty

將字符串數組轉換為雙精度值數組的原生 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM