Was ich versuche zu tun, um eine CLLocation
an die Funktion getPlacemarkFromLocation
geben, die dann die übergebene CLLocation
durch reverseGeocodeLocation
verwendet die CLPlacemark?
zu setzen, die zurückgegeben werden.Swift - CLGeocoder reverseGeocodeLocation completionHandler Schließung
Ich habe Probleme die completionHandler
Schließung in reverseGeocodeLocation
zu schaffen,
es einen Compiler-Fehler/Absturz zu werfen:
In Swift, CLGeocodeCompletionHandler
ist CLGeocodeCompletionHandler = (AnyObject[]!, NSError!) -> Void
entsprechend der Dokumentation AnyObject[]!
soll enthalten CLPlacemark
Objekte wie die Objective-C-Version.
Hier ist mein aktueller Code:
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: Es scheint, als ob der Fehler mit placemarks.count
zu tun hatte mit placemarks
nicht wie ein Array behandelt werden. Es kompiliert jetzt aber bin ich nichts anderes als Null, wenn ich versuche p
innerhalb der completionHandler
einzustellen. Ich habe die CLLocation
s überprüft und sie sind gültig.
EDIT 2: Nach placemarks
Druck, kann ich bestätigen, dass es Daten zurückgibt. gibt jedoch immer noch Null zurück.
Können Sie näher erläutern, wie Sie Ihr Problem gelöst haben? Ich habe externe Funktionen und Benachrichtigungen ausprobiert und erhalte immer noch EXC_BAD_ACCESS. Vielen Dank im Voraus, dies würde anderen Entwicklern helfen, zu Swift zu wechseln. – pxpgraphics
Sorry, ich habe diese Syntax verwendet ... 'self! .geocoder.reverseGeocodeLocation (location, completionHandler: {[schwaches Selbst] (Ortsmarken: [AnyObject] !, Fehler: NSError!) -> Void in // Your Code hier }) ' – pxpgraphics
Sicher werde ich diesen Beitrag bearbeiten und meinen aktuellen Code hinzufügen und ein bisschen mehr erarbeiten. – AaronDancer