无法从 CLGeocoder() 保存经度和纬度

Cannot save the longitute and latitude from CLGeocoder()

我想使用地址作为字符串来检索经度和纬度。我发现这里非常有用 post:

但是当我想将结果保存在双字段中时 return 我不能。我所做的是

func getLatitude(address:String) -> Double{

var lati = 0.0

var geocoder = CLGeocoder()
geocoder.geocodeAddressString("your address") {
    placemarks, error in
    let placemark = placemarks?.first
    if let lat = placemark?.location?.coordinate.latitude{
    lati = lat
    }

   }
  }
 return lati
}

在 geocoder.geocodeAddressString 块内填充了值,但是当我尝试 return 时,它总是给我 0.0,我已经尝试了所有方法。有什么想法吗?

如果它尝试打印内部代码块内的值,它会被打印出来,但我永远无法 return 它。

提前感谢您的回答。

CLLocationCoordinate2D 是定义为 CLLocationDegrees 的纬度和经度结构,它本身是 Double.

的类型别名
var latitude: Double?
var longitude: Double?

func getLocation(address: String) {

    let geocoder = CLGeocoder()
    geocoder.geocodeAddressString(address) { placemarks, error in
        guard let placemark = placemarks?.first else { return }
        let coordinate = placemark.location?.coordinate
        latitude = coordinate?.latitude
        longitude = coordinate?.longitude
    }

}