Я ударил головой, чтобы понять, как исправить этот кусок кода. В основном у меня есть кусок кода, который берет строку cityName и сохраняет широту и долготу этого в глобальной переменной и вызывает его в другой функции сразу после. По-видимому, из-за асинхронного вызова я не могу этого сделать, а значение долготы и широты равно нулю.Swift Completion Handler for Reverse Geocoding
func findCityCoordinates(cityName: String) {
var geocoder = CLGeocoder()
geocoder.geocodeAddressString(cityName, completionHandler: {(placemarks: [AnyObject]!, error: NSError!) -> Void in
if let placemark = placemarks?[0] as? CLPlacemark {
self.cityLatitude = placemark.location.coordinate.latitude //Returns nil
self.cityLongitude = placemark.location.coordinate.longitude //Returns nil
}
})
}
Я также пытался работать вокруг обработчика завершения, но я понятия не имею о том, как реализовать его и вызвать его в функцию. Я был бы признателен за помощь.
Здорово, что получилось! Но он немного отстает на несколько секунд, и я использую parse PFGeoPoint для поиска объектов, находящихся вблизи этих координат, но, видимо, что-то не работает правильно. – emsqre
Да, это немного медленно. Пользовательский интерфейс не должен замирать. Извините, я не знаком с Parse, поэтому не знаю, сколько еще я могу предоставить. – Caleb
Эй Это было полезно, я мог бы использовать его в какой-то момент для других функций, которые не требуют немедленных действий. Но спасибо большое! – emsqre