да, эта функция всегда возвращает пустую строку, потому что CLGeocoder().reverseGeocodeLocation(location)
занимает время, чтобы получить адрес из Location, и в то же время ваш return str!
также выполняется, чтобы вы получили пустую строку.
используйте замыкание для получения адреса с местоположения.
func convertToPlaceMark(_ location: CLLocation, _ handler: @escaping ((String?) -> Void)) {
CLGeocoder().reverseGeocodeLocation(location) {
places,err in
if err != nil {
print("geocoder error")
handler(nil)
return
}
let placeMark1: CLPlacemark? = places!.last
handler(placeMark1?.name)
}
}
Использование
convertToPlaceMark(location) { (address) in
if let address = address {
print(address)
}
}