guard语句变量不给我价值

时间:2016-10-08 15:18:44

标签: swift

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
                }

            }
        }

1 个答案:

答案 0 :(得分:3)

守卫声明完全按照预期的方式工作。你没有遗漏任何东西。它做它应该做的事情,而不是你想要的。

可以更轻松地编写您的第一个代码示例
self.awareLocationDetaile.text = placemark.country ?? ""

似乎你复制了女王在她89岁时编写第一行代码后写的评论。注意皇家“我们”:

//MARK:- we are a good programmer

另一方面,guard语句中的return语句将从闭包中返回,因此之后不会执行任何操作。