我在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和我的项目之间不是问题。
我知道这里的内容是重复性的,但是在其他所有论坛中我都找不到适合我的内容。
很抱歉我的英语不是最好的...
请帮助。谢谢
答案 0 :(得分:0)
在所有创建Home
实例的地方,即做Home()
,您必须使用
Home().environmentObject(UserStore())