如果让OR条件

时间:2015-07-28 07:46:38

标签: ios swift generics

是否可以使用Swift的if let

来使用“OR”条件

类似(对于Dictionary<String, AnyObject>字典):

if let value = dictionary["test"] as? String or as? Int {
       println("WIN!")
}

2 个答案:

答案 0 :(得分:11)

这没有意义,当你只有一个if语句时,你怎么能告诉值是Int还是String?但是你可以这样做:

let dictionary : [String : Any] = ["test" : "hi", "hello" : 4]


if let value = dictionary["test"] where value is Int || value is String {
    print(value)
}

(在Swift 2.0中测试)

如果您需要根据类型做不同的事情,也可以这样做:

if let value = dictionary["test"] {
    if let value = value as? Int {
        print("Integer!")
    } else if let value = value as? String {
        print("String!")
    } else {
        print("Something else")
    }
}

答案 1 :(得分:1)

不幸的是,据我所知,你做不到。您将不得不使用两个单独的if语句。

if let value = dictionary["test"] as? String {
   doMethod()
} else if let value = dictionary["test"] as? Int {
   doMethod()
}

有多种方法可以解决这个问题。这只是其中之一。 有关此特殊类型的if语句的详细信息,请参阅Optional Chaining上的Apple文档。这是使用Swift 1.2