![](/img/trans.png)
[英]cannot convert value of type [Struct] to type [string] in coercion swift
[英]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
。
此外,不應通過NSString
將String
轉換為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.