CLGeocoder()意外返回nil

问题描述 投票:0回答:1

我有一个位置列表(大约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以及其他街道名称的列表。

terminal image 1

terminal image 2

我看整个列表处理没有任何零。有任何提示吗?

swift cllocation clgeocoder
1个回答
0
投票

正如Leo所说,您不想同时运行请求。正如the documentation所说:

© www.soinside.com 2019 - 2024. All rights reserved.