线程1:致命错误:找不到UserStore类型的ObservableObject。一个View.environmentObject(_ :)

时间:2020-05-05 11:46:56

标签: ios swift swiftui

我在SwiftUI中有问题。当我尝试启动模拟器时,发生了错误。 模拟器启动正常,但几秒钟后,出现错误消息:

Fatal error: No ObservableObject of type UserStore found. A View.environmentObject(_:) for
UserStore may be missing as an ancestor of this view.: file SwiftUI, line 0 2020-05-05
13:08:36.521073+0200 PLAN.YOUR.TRIP[55476:1340155] Fatal error: No ObservableObject of type
UserStore found. A View.environmentObject(_:) for UserStore may be missing as an ancestor
of this view.: file SwiftUI, line 0
(lldb) 

这来自一个文件,在该文件中,我使用另一个名为UserStore的文件将我的项目连接到Firebase,这是发生错误的地方:

 if user.showLogin { //     <--- RIGHT HERE

            ZStack {
                LoginView(showLogin: $showLogin)

                VStack {
                    HStack {

                        Spacer()

                        Image(systemName: "xmark.circle")
                            .resizable()
                            .frame(width: 36, height: 36)
                            .foregroundColor(Color(.systemGray6))
                            .background(Color.gray.opacity(0.5))
                            .clipShape(Circle())
                            .padding()
                            .onTapGesture {
                                self.user.showLogin = false
                        }
                    }
               }
          }

该错误表明存在一个问题“未找到UserStore类型的ObservableObject”,但是我创建了一个名为“ UserStore”的文件,并将其放在其中:

import SwiftUI
import Combine

class UserStore: ObservableObject {
    @Published var isLogged = false
    @Published var showLogin = false
    @Published var showReg = false
}

并将其链接到我使用@EnvironmentObject的其他文件中,如下所示:

struct Home: View {
    @State var showProfile = false
    @EnvironmentObject var user: UserStore
    @State var showLogin = false
    @State var showReg = false

我无法理解该错误,因为昨天的代码完全相同,但是我尝试卸载名为“ Hero”的扩展程序,该扩展程序在我的项目中未使用,并且有人建议我将代码更新为快速5,这是我所做的,但是在此之后出现了许多其他错误。我决定重新创建一个具有完全相同的构造和文件的项目,使用相同的代码(没有“ Hero pod”)重新安装可可豆荚,并且包ID相同,因此在Firebase和我的项目之间不是问题。

我知道这里的内容是重复性的,但是在其他所有论坛中我都找不到适合我的内容。

很抱歉我的英语不是最好的...

请帮助。谢谢

1 个答案:

答案 0 :(得分:0)

在所有创建Home实例的地方,即做Home(),您必须使用

Home().environmentObject(UserStore())