Я думаю, что есть недоразумение о том, как работает reverseGeocodeLocation
. Как правило, я ожидаю, что он работает асинхронно.
geoCoder.reverseGeocodeLocation(sevenWorldWonderOb[index].location ?? CLLocation())
{
[weak self] (placemarks, err) in
print ("here in closure")
// ...
}
Это означает, что он напечатает здесь в замыкании и выполнит все остальные операции внутри замыкания асинхронно , когда он - когда-нибудь в будущем - получит информацию о местоположении из некоторого фонового рабочего потока.
Но все это зависит от того, как geoCoder
реализует reverseGeocodeLocation
. Я ожидал бы, что замыкание действительно вызывается семь раз, но вам нужно подождать некоторое время (пожалуйста, проверьте операторы печати).
Возможно, вам также нужно обновить точки выхода в главном потоке (используя DispatchQueue.main.async
), но это также зависит от того, как вызывается замыкание.