满足if let结构中的多个约束之一

时间:2016-04-21 16:42:52

标签: swift

我想在if let构造中满足多个约束。我知道我们可以使用“,”(逗号)来展开多个值,但它们都必须成功解包。

例如:

var str: String? = "Hello"
var x: Int? = 10

if let intValue = x, stringValue = str {
// do something here. 

} else {

}

我想如果其中一个条件成功解包,那么就会执行一个块。 例如:

class CustomClass {
 var x = 10

 static func someValue() -> String? {
 return "some"
 }
}

  var flag: Bool? = false
  var x: Int? = 10
  var status: String

在这个我希望如果customclass someValue函数或x值成功解包并且flag为true则代码执行

1 个答案:

答案 0 :(得分:5)

您可以创建一个元组并使用如下所示的开关:

switch (str, x) {
case (.Some,.Some):
    print("Both have values")
case (.Some, nil):
    print("String has a value")
case (nil, .Some):
    print("Int has a value")
case (nil, nil):
    print("Neither has a value")
}