是否可以使用Swift的if let
?
类似(对于Dictionary<String, AnyObject>
字典):
if let value = dictionary["test"] as? String or as? Int {
println("WIN!")
}
答案 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