我有一个位置列表(大约30个元素):
var locations: [CLLocation] = [
CLLocation(latitude: 45.471172, longitude: 9.163317),
...
]
我的目的是从该列表中获取街道名称,因此我决定使用CLGeocoder()
。我在viewDidLoad()
内部调用一个函数,并且每个位置都由lookUpCurrentLocation()
处理。
override func viewDidLoad() {
super.viewDidLoad()
for location in locations {
lookUpCurrentLocation(location: location, completionHandler: { streetName in
print(streetName)
})
}
}
func lookUpCurrentLocation(location: CLLocation, completionHandler: @escaping (String?) -> Void) {
CLGeocoder().reverseGeocodeLocation(location, completionHandler: { (placemarks, error) in
let placemark = placemarks?[0]
completionHandler(placemarks?[0].name)
})
}
我的问题:当应用启动时,它会显示nil或仅前两个nil以及其他街道名称的列表。
我看整个列表处理没有任何零。有任何提示吗?
正如Leo所说,您不想同时运行请求。正如the documentation所说: