gpt4 book ai didi

SwiftUI 崩溃 : "precondition failure: attribute failed to set an initial value: 71”

转载 作者:行者123 更新时间:2023-12-03 21:16:44 27 4
gpt4 key购买 nike

我有一个非常有趣的崩溃,这只发生在非常特殊的情况下。我已经向 Apple 提交了错误报告,但也许这里有人看到过类似的崩溃,知道发生了什么,并且知道解决方法?

一个显示崩溃的最小项目可以在 https://github.com/kevinrenskers/SwiftUICrash 找到。但我还在下面添加了相关代码。该项目有 3 个 View :RootView , DetailsViewListView . RootView嵌入 DetailsViewListView .

当您按下 DetailsView 中的尾随导航栏按钮时会发生崩溃。切换回 ListView .应用程序因错误“前提失败:属性无法设置初始值:71”而崩溃。

当您使用 Button在屏幕中间切换回 ListView但是,崩溃不会发生。当您删除 .resizable() 时来自背景图像的修饰符,崩溃也不会发生。

另外,如果您更改 Group进入 NavigationView内部 RootView ,应用程序不会崩溃。遗憾的是,这不是我的真实应用程序的选项。

import SwiftUI

final class AppStore: ObservableObject {
@Published var showingDetails = true
}

struct RootView: View {
@EnvironmentObject private var store: AppStore

var body: some View {
Group {
if store.showingDetails {
DetailsView()
} else {
ListView()
}
}
}
}

struct DetailsView: View {
@EnvironmentObject private var store: AppStore

var body: some View {
NavigationView {
ZStack {
GeometryReader { geo in
Image("bg")
.resizable()
.aspectRatio(contentMode: .fill)
.edgesIgnoringSafeArea(.all)
.frame(width: geo.size.width, height: geo.size.height)
}

Button("List") {
self.store.showingDetails = false // <- this works fine
}
.padding(20)
.background(Color.white)
}
.navigationBarTitle(Text("Details"))
.navigationBarItems(trailing: trailingNavigationBarItem)
}
}

private var trailingNavigationBarItem: some View {
Button("List") {
self.store.showingDetails = false // <- this crashes the app!
}
}
}

struct ListView: View {
@EnvironmentObject private var store: AppStore

var body: some View {
NavigationView {
Button("Load details") {
self.store.showingDetails = true
}
.padding(20)
.background(Color.white)
.navigationBarTitle("List")
}
}
}

最佳答案

尝试替换 RootView 中的组与 @ViewBuilder注解:

struct RootView: View {
@EnvironmentObject private var store: AppStore

@ViewBuilder
var body: some View {
if store.showingDetails {
DetailsView()
} else {
ListView()
}
}
}

我不确定这通常有多可靠。我在插入 @ViewBuilder 时取得了喜忧参半的成功过去的注释,但这似乎解决了嵌套 NavigationView 的问题.

关于SwiftUI 崩溃 : "precondition failure: attribute failed to set an initial value: 71” ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60028961/

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