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
,反之亦然。