是否有guard
相当于检查变量是否为nil
?如果是这样,我如何翻译这样的语句来代替使用guard
?
if post["preview"]! != nil {
//do stuff
} else {
//handle case where the variable is nil
}
答案 0 :(得分:36)
与某些已经回答的人一样,您可以使用let
guard let preview = post["preview"] else { /* Handle nil case */ return }
如果您没有使用变量,可以使用下划线来声明变量并避免警告。
guard let _ = post["preview"] else { /* Handle nil case */ return }
您也可以进行常规布尔检查,而不是使用let
guard post["preview"] != nil else { /* Handle nil case */ return }
对guard
guard conditionYouExpectToBeTrue else { /* Handle nil case */ return }
如果您希望能够修改变量,可以使用var
代替let
guard var preview = post["preview"] else { /* Handle nil case */ return }
Swift 3.0
您可以在语句之间使用逗号将var/let
与布尔检查结合起来。
guard let preview = post["preview"], preview != "No Preview" else { /* Handle nil case */ return }
Swift 2.x
您可以使用var/let
where
与布尔检查结合起来
guard let preview = post["preview"] where preview != "No Preview" else { /* Handle nil case */ return }
答案 1 :(得分:2)
您可以使用guard从post
字典中获取值:
guard let value = post["preview"] else {
return // or break, or throw, or fatalError, etc.
}
// continue using `value`
答案 2 :(得分:1)
您可以使用let
保护。
guard let preview = post["preview"] else {
//handle case where the variable is nil
}
答案 3 :(得分:1)
我认为您可能需要guard-let
构造,如下所示:
guard let preview = post["preview"] else { */ nil case */ }
/* handle non-nil case here... preview is non-nil */