gpt4 book ai didi

SwiftUI : Error while using if#available while trying to build to iOS 13 and iOS 14 in Xcode 12 beta 2

转载 作者:行者123 更新时间:2023-12-03 09:23:51 24 4
gpt4 key购买 nike

所以我正在努力使我的应用程序可以部署在 iOS 13(从技术上讲我想要 iOS 13.5)以及 iOS 14 上,所以我编写了这些代码行来测试它:

struct ContentView: View {
var body: some View {
if #available(iOS 14.0, *) {
List {
Text("Cool!")
Text("Cool!")
Text("Cool!")
Text("Cool!")
}
.listStyle(InsetGroupedListStyle())

} else {
List {
Text("Cool!")
Text("Cool!")
Text("Cool!")
Text("Cool!")
}
.listStyle(GroupedListStyle())
.environment(\.horizontalSizeClass, .regular)
}
}
}
构建到 iOS 14 效果很好,但是,每当我在物理手机和模拟器上构建到 iOS 13.5 时,我都会在 AppDelegate 中收到此错误:
Thread 1: EXC_BAD_ACCESS (code=1, address=0x0)
我已经确保将我的 iOS 部署目标设置为 iOS 13.5 并且我使用的是 Xcode 12 beta 2。我尝试使用 beta 1 并得到相同的结果(尽管我使用了相同的文件,所以可能这就是原因?)。我不确定我是否做错了什么,或者这是否是一个错误。当单独使用 iOS 13.5 的代码(没有 if#available)时,它按预期工作,但只有当我添加该检查器时才会出现问题。任何帮助,将不胜感激!

最佳答案

不幸的是,我可以在 Xcode 12 beta 4 中重现这个错误,所以这里有一个解决方法。您可以将 iOS 14 代码包装成 AnyView并且都将成功编译。在这种特殊情况下,您可以使用 ViewModifier使代码看起来更快捷。

struct ContentView: View {
var body: some View {
List {
Text("Cool!")
Text("Cool!")
}
.modifier(GroupedListModifier())
}
}

struct GroupedListModifier: ViewModifier {
func body(content: Content) -> some View {
Group {
if #available(iOS 14, *) {
AnyView(
content
.listStyle(InsetGroupedListStyle())
)
} else {
content
.listStyle(GroupedListStyle())
.environment(\.horizontalSizeClass, .regular)
}
}
}
}

关于SwiftUI : Error while using if#available while trying to build to iOS 13 and iOS 14 in Xcode 12 beta 2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62838350/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com