Swift - CLGeocoder reverseGeocodeLocation completionHandler closure

Was ich versuche zu tun ist, übergeben Sie einen CLLocation um die Funktion getPlacemarkFromLocation die dann anhand der übergebenen CLLocation durch reverseGeocodeLocation um die CLPlacemark? zurückgegeben werden.

Habe ich Probleme, erstellen die completionHandler Schließung in reverseGeocodeLocation, es wirft ein compiler-Fehler/Absturz:

 

In Swift CLGeocodeCompletionHandler ist CLGeocodeCompletionHandler = (AnyObject[]!, NSError!) -> Void gemäß der Dokumentation AnyObject[]! enthalten soll CLPlacemark Objekte ebenso wie die Objective-C version.

Hier ist meine aktuelle 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: wie Es scheint der Fehler zu tun hatte mit placemarks.count mit placemarks nicht behandelt werden wie ein array. Es kompiliert jetzt, aber ich bekomme nichts, aber null, wenn die versuchen p innerhalb der completionHandler. Ich habe die CLLocations übergeben und Sie sind gültig.

EDIT 2: Nach dem drucken placemarks ich kann bestätigen, dass es die Daten liefert. Allerdings p noch ist die Rückgabe nil.

InformationsquelleAutor der Frage AaronDancer | 2014-06-21

Schreibe einen Kommentar