首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >reverseGeocode - completionHandling a completionHandler?(Swift)

reverseGeocode - completionHandling a completionHandler?(Swift)
EN

Stack Overflow用户
提问于 2015-06-30 17:34:07
回答 1查看 146关注 0票数 0

实现这一目标的最佳途径是什么?我有一个函数,用于获取给定经度/纬度的reverseGeocode,它工作得很好。但是,由于它在获得地址信息时是异步的,所以我已经执行了将地址提交到数据库的行。我需要completionHandle的completionHandler还是有其他的方式。我确实尝试了一个do/while循环(不要笑),但这没有效果。

代码语言:javascript
复制
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)
    })
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-30 17:51:38

只需将提交placemark信息的代码移动到完成处理程序中的数据库。如果该代码是在reverseGeocode方法之外调用的,则可以重构reverseGeocode以将块作为参数。然后在完成块内调用该块(大概在if placemarks.count > 0 if块中)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31144720

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档