Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 在我的例子中如何检查两个参数的条件_Swift - Fatal编程技术网

Swift 在我的例子中如何检查两个参数的条件

Swift 在我的例子中如何检查两个参数的条件,swift,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条件给出了错误:条件中的变量绑定需要初始值设定项。 我知道我可能对let error==nil部分使用了错误的语法。但是,进行条件检查的正确方法是什么?对于Swif

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

(data: MyData?, error: Error?) in 
  // I want to safely unwrap data & make sure error is nil
  if let data = data, let error== nil {
  } 
上面的
if
条件给出了错误:
条件中的变量绑定需要初始值设定项。


我知道我可能对
let error==nil
部分使用了错误的语法。但是,进行条件检查的正确方法是什么?

对于Swift 3,只需在
错误之前放下
let

if let data = data, error == nil {
    // do stuff
}
在Swift 3之前,语法有点不同

if let data = data where error == nil {
}

对于Swift 3,只需在出现错误之前放下
let

if let data = data, error == nil {
    // do stuff
}
在Swift 3之前,语法有点不同

if let data = data where error == nil {
}

在您的情况下,最好使用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

在您的情况下,最好使用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

另一个选项是使用模式匹配的
if case

if case let (data?, nil) = (data, error) {
    // ...
}

这里的
数据?
是“可选模式”和
的快捷方式。一些(数据)

另一个选项是在模式匹配时使用

if case let (data?, nil) = (data, error) {
    // ...
}

这里的
数据?
的“可选模式”和快捷方式。一些(数据)

在几乎所有情况下,只检查一个参数就足够了。例如,在
NSURLSessionDataTask
的完成处理程序中,如果
数据有效,则error
nil
,反之亦然。在几乎所有情况下,只检查一个参数就足够了。例如,在
NSURLSessionDataTask
的完成处理程序中,如果
数据
有效,则error
nil
,反之亦然。