操作系统版本范围的可用性检查

Mic*_*let 6 swift

在我的应用程序中,我想在操作系统版本严格处于特定范围内时执行操作,并在超出该范围(低于或高于该范围)时执行其他操作。特定上下文位于 SwiftUI 内@ViewBuilder,但这对于版本检查本身并不重要。我知道我可以通过这样的事情来实现这一点,例如:

if #available(iOS 16.4, *) {
    baseView
}
else if #available(iOS 16.0, *) {
    baseView
        .extraModifierOnlyNecessaryBetweeniOS16And16Point4()
}
else {
    baseView
}
Run Code Online (Sandbox Code Playgroud)

仅当 iOS 版本在 16.0..<16.4 范围内时,才会应用额外的修饰符,这正是我想要的。然而,它不是很干燥,因为我必须枚举baseView高于和低于该范围的情况,即使这些情况完全相同

我希望我能够做到这一点,但它无法编译,正如 Swift 所说,#available并且#unavailable不能在同一个语句中使用:

if #available(iOS 16, *), #unavailable(iOS 16.4) {
    baseView
        .extraModifierOnlyNecessaryBetweeniOS16And16Point4()
}
else {
    baseView
}
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来完成此任务,以便我不必分别处理上述和以下情况?

小智 2

也许你可以这样做\xef\xbc\x9a

\n
    if #available(iOS 16, *) {\n        if #unavailable(iOS 16.4) {\n            return baseView\n                .extraModifierOnlyNecessaryBetweeniOS16And16Point4()\n        }\n    }\n    return baseView\n
Run Code Online (Sandbox Code Playgroud)\n