我想在一个语句中检查一个对象是否是NSNumber
的类型,一个布尔变量是true
。
为此我写了如下:
let someBool = ...
if value.isKindOfClass(NSDictionary) {
// do something with dict
}
else if (let number = value as? NSNumber) && someBool{
//Do something with number
}
else {
// do something here
}
但是,像模式变量绑定这样的抛出错误不能出现在表达式中。
如何在单个if
条件下使用可选的展开和布尔条件?
答案 0 :(得分:6)
您可以使用where
子句:
if let number = value as? NSNumber where someBool {
// ...
}
答案 1 :(得分:1)
ABakerSmith的回答非常完美。
我只想分享如何使用强大的Swift switch
语句来实现相同的结果。
switch value {
case let dictionary as NSDictionary:
println("do something with dictionary")
case let number as NSNumber where someBool:
println("do something with number")
default: println("do something here")
}