var country = ""
if placemark.country != nil{
country = placemark.country!
}
self.awareLocationDetaile.text = country
尝试转换此代码保护声明
guard let country = placemark.country else{
return
}
self.awareLocationDetaile.text = country
但如果我使用后卫声明,那么不幸的国家没有价值如果给我价值。我错过了什么?
更新:
CLGeocoder().reverseGeocodeLocation(location) { ( clPlacemark :[CLPlacemark]?,error : NSError?) in
if error != nil {
print(error)
}else{
if let placemark = clPlacemark?[0]{
// print(placemark)
//MARK:- we are a good programmer
// var country = ""
// if placemark.country != nil{
// country = placemark.country!
// }
// self.awareLocationDetaile.text = country
guard let country = placemark.country else{
return
}
self.awareLocationDetaile.text = country
}
}
}
答案 0 :(得分:3)
守卫声明完全按照预期的方式工作。你没有遗漏任何东西。它做它应该做的事情,而不是你想要的。
可以更轻松地编写您的第一个代码示例self.awareLocationDetaile.text = placemark.country ?? ""
似乎你复制了女王在她89岁时编写第一行代码后写的评论。注意皇家“我们”:
//MARK:- we are a good programmer
另一方面,guard语句中的return语句将从闭包中返回,因此之后不会执行任何操作。