1
我想了解for循環中有完成處理程序方法的行爲。Swift:在for循環中調用完成處理程序方法
請參閱下面的示例,我試圖獲取2個地址的緯度/經度座標。
let addressArray = ["1 Infinite Loop, Cupertino", "809, Harvard Ave, Sunnyvale, CA - 94087"]
var coordinatesArray = [CLLocationCoordinate2D]()
for i in 0 ..< addressArray.count {
print(i)
let address = addressArray[i]
geocoder.geocodeAddressString(address, completionHandler: {(placemarks, error) -> Void in
print("Address = \(address)");
if let placemark = placemarks?.first {
let coordinate = placemark.location?.coordinate
self.coordinatesArray.append(coordinate!)
}
})
}
// Do something here after that that
輸出是這樣的
0
1
Address = 1 Infinite Loop, Cupertino
我很奇怪,爲什麼沒有在代碼打印的其他地址。第二個循環沒有調用geocodeAddressString方法。假定在for循環結束後應用程序執行沒有結束,我還做了很多其他的事情。
是真正的輸出還是你輸入了?不應該最後一行看起來像'地址=東西' – Fonix
您發佈的代碼沒有直接連接到輸出,請使用從代碼和控制檯複製粘貼;你也打印'地址',這是什麼? –
更新了代碼和輸出。 – sysuser