天天看點

Swift guard let 的使用

guard let的意思與if let的意思是一樣的,都是針對于可選類型進行解包,使用guard let可以是代碼更加清晰易讀。

例如

let dictionary: Dictionary<String, Any>? = ["data": ["book" : ["id" : "1"]]]
if let dict = dictionary {
    if let data = dict["data"] as? Dictionary<String, Any> {
        if let book = data["book"] as? Dictionary<String, Any> {
            if let id = book["id"] as? String {
                print(id)
            }
        }
    }
}
           

使用guard let與if的條件是一樣的,隻是需要加上else return,這樣使用便不會嵌套很多if層,看起來更加直覺。

let dictionary: Dictionary<String, Any>? = ["data": ["book" : ["id" : "1"]]]
guard let dict = dictionary else { return }
guard let data = dict["data"] as? Dictionary<String, Any> else { return }
guard let book = data["book"] as? Dictionary<String, Any> else { return }
guard let id = book["id"] as?String else { return }
print(id)