如何在单个if条件中使用可选的展开和布尔条件

时间:2015-06-07 09:31:34

标签: swift boolean optional

我想在一个语句中检查一个对象是否是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条件下使用可选的展开和布尔条件?

2 个答案:

答案 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")
}