一尘不染

否定#可用语句

swift

我只想在运行操作系统早于的设备上执行代码块iOS8。我不能:

if #available(iOS 8.0, *) == false {
    doFoo() 
}

我现在使用的解决方案是:

if #available(iOS 8.0, *) { } else { 
    doFoo() 
}

,但感觉笨拙。还有另一种方法可以#available用Swift优雅地否定声明吗?


阅读 226

收藏
2020-07-07

共1个答案

一尘不染

#available语句周围没有逻辑。

实际上,编译器使用该语句来推断可以在其包含的范围内调用哪些方法,因此在运行时无法执行有条件地执行该块的操作。

可以使用逗号组合条件,如下所示

if #available(iOS 8.0, *), myNumber == 2 {
  // some code
}
2020-07-07