Следующий код не работает должным образом.Как я могу получить доступ к переменному внешнему блоку?
func convertToStreet(location:CLLocationCoordinate2D) -> CLPlacemark {
var tempLocation = CLLocation(latitude: location.latitude, longitude: location.longitude)
var temPlacemark:CLPlacemark?
CLGeocoder().reverseGeocodeLocation(tempLocation, completionHandler: {(placemarks, error) in
temPlacemark = (placemarks[0] as CLPlacemark)
println(temPlacemark!.thoroughfare)
})
return temPlacemark!
}
Println внутри обработчика завершения работает правильно, но значение temPlacemark равна нулю в конце кода. Почему это происходит? Я очень благодарю вас за это.
Это происходит потому, что в ответное время оно все еще работает над этим. Если вы поместите поток, чтобы подождать определенное количество времени, вы получите правильное значение. Кроме того, если вы поместите контрольную точку внутри обработчика завершения и снаружи, вы увидите, что внешняя часть выполняется в первую очередь. – Miknash
Спасибо всем !!! – storybored