我从服务器获取数据,其中一个值可以是NSDictionary
或[NSDictionary]
。我想知道是否可以使用新的Swift guard
来检查这两种类型。这就是我现在正在做的事情:
guard let list = response["answer"] as? [NSDictionary] else {
return nil
}
但我想要这样的事情:
guard let list = response["answer"] as? [NSDictionary] || let list = response["answer"] as? NSDictionary else {
return nil
}
我不想使用if-let
,因为我非常喜欢新的语法。有没有办法用guard
来实现这个目标?
答案 0 :(得分:1)
您可以使用关键字is来了解类型(https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/TypeCasting.html检查类型)
编辑:在游乐场测试
[Shift]-[F1]
答案 1 :(得分:1)
我建议将检查的可用性和类型分开。
首先检查密钥是否存在
guard let list : AnyObject = response["answer"] else {
return nil
}
然后检查类型
if list is NSDictionary {
print("is dictionary")
} else if list is [NSDictionary] {
print("is array of dictionary")
} else {
fatalError("that should never happen")
}