gpt4 book ai didi

SwiftUI -> 线程 1 : Fatal error: No ObservableObject of type ModelData found

转载 作者:行者123 更新时间:2023-12-03 08:26:49 28 4
gpt4 key购买 nike

我使用 SwiftUI 创建了一个应用程序,当我尝试显示按钮时,会出现此错误消息:

Thread 1: Fatal error: No ObservableObject of type ModelData found. A View.environmentObject(_:) for ModelData may be missing as an ancestor of this view.

当我在尝试显示应用程序的 View 之一时尝试使用 @EnvironmentObject 时,就会发生这种情况。

我的代码是

struct OpportunityDetail: View {
@EnvironmentObject var modelData: ModelData
var opportunity: Opportunity

var opportunityIndex: Int {
modelData.opportunities.firstIndex(where: { $0.id == opportunity.id })!
}


var body: some View {
ScrollView {

MapView(coordinate: opportunity.locationCoordinate)
.frame(height: 300)
.ignoresSafeArea(edges: .top)

CircleImage(opportunity: opportunity)
.offset(y: -130)
.padding(.bottom, -130)


VStack {
VStack(alignment: .leading) {
Text(opportunity.position)
.font(.title)
HStack {
Text(opportunity.name)
.font(.subheadline)
Spacer()
Text(opportunity.city)
.font(.subheadline)
}
.font(.subheadline)
.foregroundColor(.secondary)

Divider()
Text("About the Opportunity")
.font(.title2)
Text(opportunity.description)
ApplyButton(isSet: $modelData.opportunities[opportunityIndex].isApplied)
}
.padding()
}
}
.navigationTitle(opportunity.name)
.navigationBarTitleDisplayMode(.inline)
}
}

但是, View 的预览和实时预览工作正常


struct OpportunityDetail_Previews: PreviewProvider {

static let modelData = ModelData()

static var previews: some View {
OpportunityDetail(opportunity: modelData.opportunities[0])
.environmentObject(modelData)
}
}

我知道我必须将环境对象传递到某个地方,但不知道如何传递。我将非常感谢任何人的帮助。

最佳答案

通过将 .environmentObject(modelData) 放入 ContentView 中解决了我的问题,因为正如 New Dev 所说,它是我所有 subview 的 Root View :

您必须使用 .environmentObject(modelData),就像在 View 层次结构中的某个位置进行预览一样。例如,OpportunityDetail 的父 View 可以执行此操作,或者您可以在根级别创建它。例如,如果 ContentView 是您的 Root View ,您可以将其设置在那里。

关于SwiftUI -> 线程 1 : Fatal error: No ObservableObject of type ModelData found,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66415966/

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