Birisi neden "[CLLocationCoordinate2D] tipinin değişmez değerini atamadı" hatasını aldığımı açıklayabilir miyim? İki senaryo vereceğim. İkincisinin çalışmasını istememin nedeni, bir döngüde olacağım ve bunu her seferinde drawShape fonksine aktarmam gerektiğidir.Swift, [CLLocationCoordinate2D] tipinin değişmez değerini atayamaz.
Bu kod çalışır:
func drawShape() {
var coordinates = [
CLLocationCoordinate2D(latitude: 40.96156150486786, longitude: -100.24319656647276),
CLLocationCoordinate2D(latitude: 40.96456685906742, longitude: -100.25021235388704),
CLLocationCoordinate2D(latitude: 40.96528813790064, longitude: -100.25022315443493),
CLLocationCoordinate2D(latitude: 40.96570116316434, longitude: -100.24954721762333),
CLLocationCoordinate2D(latitude: 40.96553915028926, longitude: -100.24721925915219),
CLLocationCoordinate2D(latitude: 40.96540144388564, longitude: -100.24319644831121),
CLLocationCoordinate2D(latitude: 40.96156150486786, longitude: -100.24319656647276),
]
var shape = MGLPolygon(coordinates: &coordinates, count: UInt(coordinates.count))
mapView.addAnnotation(shape)
}
Bu kod işe ETMEZ: Bu işe yaramazsa neden anlamıyorum
override func viewDidLoad() {
super.viewDidLoad()
// does stuff
var coords: [CLLocationCoordinate2D] = [
CLLocationCoordinate2D(latitude: 40.96156150486786, longitude: -100.24319656647276),
CLLocationCoordinate2D(latitude: 40.96456685906742, longitude: -100.25021235388704),
CLLocationCoordinate2D(latitude: 40.96528813790064, longitude: -100.25022315443493),
CLLocationCoordinate2D(latitude: 40.96570116316434, longitude: -100.24954721762333),
CLLocationCoordinate2D(latitude: 40.96553915028926, longitude: -100.24721925915219),
CLLocationCoordinate2D(latitude: 40.96540144388564, longitude: -100.24319644831121),
CLLocationCoordinate2D(latitude: 40.96156150486786, longitude: -100.24319656647276),
]
self.drawShape(coords)
}
func drawShape(coords: [CLLocationCoordinate2D]) {
var shape = MGLPolygon(coordinates: &coords, count: UInt(coords.count)) //---this is where the error shows up
mapView.addAnnotation(shape)
}
. Hatta println(coordinates)
vs println(coords)
var ve bana her biri için aynı çıktıyı verir.
hero! Açıklama için teşekkürler ve düzeltin! – thinkgeekguy
FYI - Derleyici, 'var' anahtar kelimesinin Swift3'te kaldırılacağı konusunda uyardı. Her bir alanı doğrudan kopyalamanın ötesinde iyi bir çözüm bulamadım. :( – eimmer
'var', Swift 2.2'de 'inout' ile değiştirilmiştir. – EFC