所以我的问题是:我正在尝试实现 CLGeoCoder 的扩展,以便能够从 CLLocation 获取城市名称,但是当我尝试在 reverseGeocodeLocation 的完成处理程序中设置 inout 城市名称字符串时遇到问题
这是我的扩展代码:
extension CLGeocoder {
func findCityName(location:CLLocation, inout cityName:String) -> Void{
self.reverseGeocodeLocation(location, completionHandler: { (placemarks, error) -> Void in
// Place details
var placeMark: CLPlacemark!
placeMark = placemarks?[0]
// Address dictionary
print(placeMark.addressDictionary)
// City
if let city = placeMark.addressDictionary!["City"] as? String {
cityName = city
}
})
}
}
这个扩展的目标是能够通过引用这个函数来设置一个带有城市名称的字符串。
一个例子是:
var cityName = ""
let location:CLLocation(latitude: 1, longitude: 1)
let geocoder: CLGeocoder()
geocoder.findCityName(location, &cityName)
///Later on in the process I would want to be able to use cityName for different purposes in my code
我面临的问题是,在completionHandler 中设置cityName 引用后,cityName 的值在completionHandler 之外保持为空。
我是 swift 新手,所以我可能错过了指针或如何使用它们的一些东西,但我知道 inout 可以从函数或闭包/完成处理程序内部更改变量的值。
提前感谢您就我面临的这个问题提供的任何信息。
马丁