在我的情况下如何检查两个参数的条件

时间:2017-08-04 14:10:35

标签: swift

假设我有一个带有两个可选参数的闭包:

(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部分使用了错误的语法。但是,进行条件检查的正确方法是什么?

3 个答案:

答案 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)的快捷方式。