這是沒有意義的變量暴露給if let
聲明外:
if let json = ... {
//This code will only run if json is non-nil.
//That means json is guaranteed to be non-nil here.
}
//This code will run whether or not json is nil.
//There is not a guarantee json is non-nil.
您有其他幾個選項,這取決於你想要做什麼:
您可以將需要json
的其餘代碼放在if
的內部。你說你不知道嵌套if
陳述是「聰明的還是可能的」。它們是可能的,程序員經常使用它們。你也可以將其解壓縮到另一個功能:
func doStuff(json: String) {
//do stuff with json
}
//...
if let json = ... {
doStuff(json: json)
}
如果您知道是JSON不應該永遠是nil
,用!
可以強制解開它:
let json = ...!
您可以使用guard
語句使變量全局。 guard
內部的代碼將僅在json
爲nil
時運行。
//throw an error
do {
guard let json = ... else {
throw SomeError
}
//do stuff with json -- it's guaranteed to be non-nil here.
}
//return from the function
guard let json = ... else {
return
}
//do stuff with json -- it's guaranteed to be non-nil here.
//labeled break
doStuff: do {
guard let json = ... else {
break doStuff
}
//do stuff with json -- it's guaranteed to be non-nil here.
}
:一個
guard
語句
必須出口封閉範圍,例如通過引發錯誤,通過從函數返回,或用標記的斷裂的主體