如果让 - 多个条件

时间:2016-03-23 07:45:09

标签: ios swift swift2 optional

我可以在IF

中使用let obj = something的多个条件
if let u = custom["u"] as? String || let url = custom["URL"] as? String
{
// Do something here
}

4 个答案:

答案 0 :(得分:4)

您可以添加多个条件,但仅限于使用AND条件。

如果您使用OR,则不知道您的哪个值已正确设置,因此无法正确访问变量。

通过AND测试,您确定两个变量都已正确创建,因此您可以确切地知道它们的类型。

您必须使用逗号分隔符分隔测试:

if let u = custom["u"], 
   let url = custom["URL"] {
    // Do something here
}

此外,您可以使用if let关键字在where阻止后直接添加一些条件:

if let u = custom["u"] where u == "testValue", 
   let url = custom["URL"] {
    // Do something here
}

答案 1 :(得分:1)

我假设您的收藏类型为Dictionary

如果您真的想使用OR

if(custom.keys.contains("u") || custom.keys.contains["URL"]) { }

但正如其他人写的那样,这并没有多大意义,因为如果你需要这些键的值,你仍然需要编写两个单独的if语句。

if let u = custom["u"] {
    print("Value for u: \(u!)");
}

if let url = custom["URL"] {
    print("Value for URL: \(url!)");
}

答案 2 :(得分:-1)

1)OR没有意义 2)用于AND,而不是

if let u = custom["u"] as? String,
let url = custom["URL"] as? String {
// Do something here
}

答案 3 :(得分:-1)

我同意user3441734。你想做什么?

if let u = custom["u"] as? String { 
    if let url = custom["URL"] as? 
    // Do something here
    }
}

我会这样做。内部块仅在上述条件为真时执行或:

 if let u = custom["u"] as? String { 
     // Call same method 
 }
 if let url = custom["URL"] as? 
     // Call same method 
 }

这样就会检查并执行这两个。