这是我的情况。(使用Swift 2.2)
我有一个坐标列表(CLLocation
)。我需要调用reverseGeocodeLocation
来获取相应的地方/城市。如果我尝试遍历所有元素,则可能会出现一些呼叫失败的情况,因为苹果建议每秒发送一次呼叫。因此,我还需要在每个调用之间添加一个延迟。
有什么办法可以做到这一点?任何帮助表示赞赏。
(如果我们有多个具有相同经度的项目,那么长我们只调用一次api)
这段代码声明了一组位置,并一个接一个地查找它们,两次请求之间的间隔至少为1秒:
var locations = Set<CLLocation>()
func reverseGeocodeLocation() {
guard let location = locations.popFirst() else {
geocodingDone()
return
}
CLGeocoder().reverseGeocodeLocation(location) { placemarks, error in
//Do stuff here
//Dispatch the next request in 1 second
_ = Timer.scheduledTimer(withTimeInterval: 1, repeats: false) { _ in
self.reverseGeocodeLocation()
}
}
}
func geocodingDone() {
//Put your finish logic in here
}
仅供参考,我为Timer使用了块语法,但是仅在iOS 10上有效。如果您使用的是iOS 9或更早版本,请使用选择器版本,其工作方式相同。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句