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)