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

Joh*_*tty 2 boolean optional swift

我想在一个语句中检查一个对象是否是一个类型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
}
Run Code Online (Sandbox Code Playgroud)

但是,像'模式变量绑定这样的抛出错误不能出现在表达式中'.

如何在单一if条件下使用可选的展开和布尔条件?

ABa*_*ith 6

你可以使用一个where子句:

if let number = value as? NSNumber where someBool {
    // ...
}
Run Code Online (Sandbox Code Playgroud)

  • 首先是`if let`,如果`value`可以转换为`NSNumber`那么将检查`someBool`是否为'true`; 在这种情况下,大括号内的代码运行.资料来源:http://nshipster.com/swift-1.2/ (2认同)