我只想在运行操作系统超过iOS8的设备上执行代码块.我做不到:

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

我目前使用的解决方案是:

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

,但感觉很笨重.有没有其他方法可以优雅地用Swift否定#available的说法?

推荐答案

在Swift 5.6中,您现在可以执行以下操作:

if #unavailable(iOS 15, *) {
    // Under iOS 15
} else {
    // iOS 15+
}

或者根据您的情况 Select 以下选项:

if #unavailable(iOS 15, *) {
    // Under iOS 15
}

这是SE-0290: Negative availability的一部分.

Swift相关问答推荐

如何在visionOS上删除PhotosPicker背景 colored颜色 ?

RealityKit(VisionOS)中的PhysicBodyComponent和DragGesture

如何在visionOS中进行购买?&# 39;购买(选项:)在visionOS中不可用

无法创建MKAssociateRegion对象

我可以为UIMenu设定一个固定的订单吗?

减小SF符号的边框宽度

根据其属性组合 2 个模型以在 Swift 中创建另一个模型

如何在一个视图控制器中创建具有相同行为的多个集合视图?

闭包 - deinit self 对象的时间

Swift 中的Combine和didSet有什么区别?

为什么 SwiftUI 不在工具栏菜单中反映 @State 属性值?

是否可以使任何协议符合 Codable?

无法增加系统镜像的大小

如何让不同的组件拥有不同的动画?

组合 flatMap 不会返回预期的上下文结果类型

在 Swift 4 中实现自定义解码器

当我必须在 Swift 中的类、 struct 和枚举之间进行 Select 时,我应该如何推理?

我将哪种 Swift 数据类型用于货币

swift : 具有类型和值的枚举常量

为什么枚举具有计算(computed)属性但在 Swift 中没有存储属性?