gpt4 book ai didi

ios - 无法从 CLGeocoder reverseGeocodeLocation 返回字符串

转载 作者:搜寻专家 更新时间:2023-11-01 06:18:38 37 4
gpt4 key购买 nike

我想编写一个函数来对位置进行反向地理编码并将结果字符串分配给一个变量。正在关注this发布我有这样的东西:

extension CLLocation {

func reverseGeocodeLocation(completion: (answer: String?) -> Void) {

CLGeocoder().reverseGeocodeLocation(self) {

if let error = $1 {
print("[ERROR] \(error.localizedDescription)")
return
}

if let a = $0?.last {
guard let streetName = a.thoroughfare,
let postal = a.postalCode,
let city = a.locality else { return }

completion(answer: "[\(streetName), \(postal) \(city)]")
}

}
}
}

为了调用这个函数,我得到了这样的东西:

location.reverseGeocodeLocation { answer in
print(answer)
}

但是我想将 answer 的字符串值分配给一个变量,但我不知道如何将该数据传递出闭包。执行此类操作的最佳方法是什么?

最佳答案

问题是它是异步运行的,所以你不能返回值。如果您想更新某些属性或变量,正确的位置是在您提供给方法的闭包中,例如:

var geocodeString: String?

location.reverseGeocodeLocation { answer in
geocodeString = answer
// and trigger whatever UI or model update you want here
}

// but not here

闭包 completion 处理程序模式的全部目的是提供异步检索数据的首选方式。

关于ios - 无法从 CLGeocoder reverseGeocodeLocation 返回字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38819750/

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