Swift - CLGeocoder reverseGeocodeLocation завершениеЗакрытие
Что я пытаюсь сделать, это передатьCLLocation
к функцииgetPlacemarkFromLocation
который затем использует переданныйCLLocation
черезreverseGeocodeLocation
установитьCLPlacemark?
это будет возвращено.
У меня проблемы с созданиемcompletionHandler
закрытие вreverseGeocodeLocation
, он выдает ошибку компилятора / сбой:
В СвифтеCLGeocodeCompletionHandler
являетсяCLGeocodeCompletionHandler = (AnyObject[]!, NSError!) -> Void
согласно документацииAnyObject[]!
должен содержатьCLPlacemark
объекты так же, как версия Objective-C.
Вот мой текущий код:
class func getPlacemarkFromLocation(location:CLLocation)->CLPlacemark?{
var g = CLGeocoder()
var p:CLPlacemark?
g.reverseGeocodeLocation(location, completionHandler: {
(placemarks, error) in
let pm = placemarks as? CLPlacemark[]
if (pm && pm?.count > 0){
p = placemarks[0] as? CLPlacemark
}
})
return p?
}
РЕДАКТИРОВАТЬ: Кажется, что ошибка была связана сplacemarks.count
сplacemarks
не обрабатывается как массив. Это компилируется сейчас, однако я получаю только ноль при попытке установитьp
внутриcompletionHandler
, Я проверилCLLocation
Проходят, и они действительны.
РЕДАКТИРОВАТЬ 2: после печатиplacemarks
Я могу подтвердить, что он возвращает данные. тем не мениеp
все еще возвращается ноль.