gpt4 book ai didi

Swift - 等待 alamofire 完成的时间

转载 作者:行者123 更新时间:2023-11-28 13:33:33 26 4
gpt4 key购买 nike

我只是想获取城市的纬度和经度。但是在 alamofire 可以完成请求之前,我收到了 0.0 的定义值,这不是我想要的。我确实获得了纬度和经度的值,但是 0.0 已经传递,所以应用程序只接受它。

我试过完成 block ,但没有用。我在这里和那里尝试了一些小技巧,但没有任何效果。我该如何改进?

func getAddress(address:String){

let key : String = "<API_KEY>"
let postParameters:[String: Any] = [ "address": address,"key":key]
let url : String = "https://maps.googleapis.com/maps/api/geocode/json"
var lat = 0.0
var long = 0.0

Alamofire.request(url, method: .get, parameters: postParameters, encoding: URLEncoding.default, headers: nil).responseJSON {
response in if let receivedResults = response.result.value
{
let resultParams = JSON(receivedResults)
print(resultParams["status"]) // OK, ERROR
lat = resultParams["results"][0]["geometry"]["location"]["lat"].doubleValue// approximately latitude
long = resultParams["results"][0]["geometry"]["location"]["lng"].doubleValue // approximately longitude
print("Here i am \(self.destLatitude)")
}
self.destLatitude = lat
self.destLongitude = long
print("Here i am also \(self.destLatitude)")
}
}

预期输出是一个地方的经纬度。

最佳答案

网络请求异步工作,将值分配给完成处理程序中的属性

Alamofire.request(url, method: .get, parameters: postParameters, encoding: URLEncoding.default, headers: nil).responseJSON {
response in if let receivedResults = response.result.value
{
let resultParams = JSON(receivedResults)
print(resultParams["status"]) // OK, ERROR
lat = resultParams["results"][0]["geometry"]["location"]["lat"].doubleValue// approximately latitude
long = resultParams["results"][0]["geometry"]["location"]["lng"].doubleValue // approximately longitude
self.destLatitude = lat
self.destLongitude = long
print("Here i am \(self.destLatitude)")
}
}

关于Swift - 等待 alamofire 完成的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57004459/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com