假设我有一个带有两个可选参数的闭包:
(data: MyData?, error: Error?) in
// I want to safely unwrap data & make sure error is nil
if let data = data, let error== nil {
}
上面的if
条件给出了错误:Variable binding in a condition requires an initializer.
我知道我可能在let error==nil
部分使用了错误的语法。但是,进行条件检查的正确方法是什么?
答案 0 :(得分:5)
对于Swift 3,只需在let
error
if let data = data, error == nil {
// do stuff
}
在Swift 3之前,语法有点不同
if let data = data where error == nil {
}
答案 1 :(得分:1)
在你的情况下,使用guard是个好主意:
(data: MyData?, error: Error?) in
// I want to safely unwrap data & make sure error is nil
guard let data = data, error == nil else {
return
}
// code here
答案 2 :(得分:0)
另一个选择是使用if case
模式匹配:
if case let (data?, nil) = (data, error) {
// ...
}
此处data?
是"可选模式"以及.some(data)
的快捷方式。