То, что я пытаюсь сделать, это передать CLLocation
функции getPlacemarkFromLocation
, которая затем использует переданные CLLocation
через reverseGeocodeLocation
для установки CLPlacemark?
, которое будет возвращено.
У меня проблемы с созданием замыкания completionHandler
в reverseGeocodeLocation
, выдает ошибку/сбой компилятора:
В Swift 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
по-прежнему возвращает ноль.