下面的类提供了一个变异函数来改变它的属性:
class Person {
struct Location {
var coordinate: CLLocationCoordinate2D!
var city: String?
mutating func setLocationNameFromCoordinate(completion:(()->())?) {
let location = CLLocation(latitude: coordinate.latitude, longitude: coordinate.longitude)
CLGeocoder().reverseGeocodeLocation(location) { (placemarks: [CLPlacemark]?, error: NSError?) in
guard let city = placemarks?.first?.locality where error == nil else {
return
}
self.city = city //1
completion?()
}
}
}
var location: Location?
}
函数调用如下:
person.location?.setLocationNameFromCoordinate() {
print(person.location?.city) //2
}
但是,在1
设置了城市名称时,从位置 Struct 内部查看它,但未2
为对象设置城市名称。我在这里做错了什么?