0

これを達成するための最良の方法は何ですか?特定の経度/緯度のreverseGeocodeを取得する機能があり、正常に機能します。しかし、アドレス情報を取得するまでは非同期であるため、アドレスをデータベースにコミットする行を既に実行しています。completionHandler を completionHandle する必要がありますか、それとも他の方法がありますか。do/while ループ (笑わないでください) を試しましたが、うまくいきませんでした。

func reverseGeocode() -> Bool {
    let geoCoder = CLGeocoder()
    let newLocation = CLLocation(latitude: valueLatitude, longitude: valueLongitude)
    geoCoder.reverseGeocodeLocation(newLocation, completionHandler: {(placemarks: [AnyObject]!, error: NSError!) in
    if error != nil {
        println("LocationsMenu - Geocode failed with error: \(error.localizedDescription)")
    }
    if placemarks.count > 0 {
        let myplacemark         = placemarks[0] as! CLPlacemark
        let addressDictionary   = myplacemark.addressDictionary
        let address             = addressDictionary[kABPersonAddressStreetKey] as! NSString
        let city                = addressDictionary[kABPersonAddressCityKey] as! NSString
        let state               = addressDictionary[kABPersonAddressStateKey] as! NSString
        let postcode            = addressDictionary[kABPersonAddressZIPKey] as! NSString
        let country             = addressDictionary[kABPersonAddressCountryKey] as! NSString
        println("\(address) \(city) \(state) \(postcode) \(country)")
    }
    self.showMap(placemarks[0] as! CLPlacemark)
    })
}
4

1 に答える 1