具有关联值的枚举案例不能用“@available”标记为可能不可用

Has*_*ssy 11 xcode swift xcode13

我在Xcode 13上收到以下代码的错误消息

@available(iOS 13.0, *)
    case windowScene(_: UIWindowScene, windowLevel: UIWindow.Level)
Run Code Online (Sandbox Code Playgroud)

具有关联值的枚举案例不能用“@available”标记为可能不可用

有谁知道我为什么会收到此错误以及纠正该错误的解决方案是什么?它在 Xcode 12 中运行良好。

Dáv*_*tor 12

请参阅此 Swift bug,获取 Swift 编译器团队的解释和解决方法。

这是故意的。具有可能不可用的有效负载的枚举案例的 ABI 没有明确定义。这在过去起作用是巧合的是,您的应用程序不需要有效负载的(可能不可用的)类型元数据。请增加您的部署目标或将 Foo 本身标记为可用作为最不可用的情况。 https://github.com/apple/swift/pull/36327

因此,您要么需要将整个枚举标记为@available(iOS 13.0, *),要么需要将部署目标增加到iOS 13.0

  • 现在它被标记为已解决,但在 Xcode 13.0 (13A233) 中我仍然拥有它 (7认同)

小智 6

当我使用 pod“SwiftMessages”显示弹出消息时,我收到了相同的消息。

我刚刚将 pod 'SwiftMessages' 替换为 pod 'SwiftMessages', '~> 5.0'。