我只想在运行低于 iOS8
操作系统的设备上执行代码块。我做不到:
if #available(iOS 8.0, *) == false {
doFoo()
}
我目前使用的解决方案是:
if #available(iOS 8.0, *) { } else {
doFoo()
}
,但感觉笨拙。有没有另一种方法可以用 Swift 优雅地否定 #available
语句?
最佳答案
我为此使用了一个守卫
:
guard #available(iOS 8.0, *) else {
// Code for earlier OS
}
当然,由于 guard
需要退出作用域,因此可能会有轻微的尴尬。但这很容易通过将整个事情放入它自己的函数或方法中来回避:
func makeABox()
{
let boxSize = .large
self.fixupOnPreOS8()
self.drawBox(sized: boxSize)
}
func fixupOnPreOS8()
{
guard #available(iOS 8, *) else {
// Fix up
return
}
}
当您放弃对早期系统的支持时,删除它真的很容易。
关于ios - 否定#available语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32633799/