Quello che sto cercando di fare è passare un CLLocation
alla funzione getPlacemarkFromLocation
che poi utilizza il passato CLLocation
attraverso reverseGeocodeLocation
per impostare il CLPlacemark?
che verrà restituito.Swift - CLGeocoder reverseGeocodeLocation chiusura completionHandler
sto avendo problemi che creano il completionHandler
chiusura nel reverseGeocodeLocation
,
è gettando un errore di compilazione/crash:
In Swift, CLGeocodeCompletionHandler
è CLGeocodeCompletionHandler = (AnyObject[]!, NSError!) -> Void
in base alla documentazione AnyObject[]!
si suppone che contengono CLPlacemark
oggetti proprio come la versione Objective-C.
Ecco il mio codice corrente:
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?
}
EDIT: Sembra che l'errore ha avuto a che fare con placemarks.count
con placemarks
non essere trattati come un array. Compilano ora, tuttavia non ottengo nulla se non zero quando cerco di impostare p
all'interno dello completionHandler
. Ho controllato il passaggio degli CLLocation
e sono validi.
MODIFICA 2: Dopo aver stampato placemarks
, posso confermare che restituisce i dati. Tuttavia, p
restituisce ancora zero.
Puoi approfondire come hai risolto il problema? Ho provato funzioni e notifiche esterne e sto ancora ricevendo EXC_BAD_ACCESS. Grazie in anticipo, questo aiuterebbe gli altri sviluppatori a passare a Swift. – pxpgraphics
scusate, stavo usando questa sintassi ... 'self! .geocoder.reverseGeocodeLocation (location, completionHandler: {[self debole] (segnaposto: [AnyObject] !, errore: NSError!) -> Void in // Your }) ' – pxpgraphics
Certo, modificherei questo post e aggiungerò il mio codice corrente ed elaborerò un po 'di più. – AaronDancer