【发布时间】:2023-03-03 05:04:20
【问题描述】:
我在 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”的扩展,该扩展在我的项目中未使用,并且有人建议我将我的代码更新为 swift 5,这是我所做的,但在此之后出现了许多其他错误。我决定用完全相同的结构和文件重新创建一个项目,用相同的代码(没有“Hero pod”)重新安装可可豆荚,并且捆绑包 ID 是相同的,所以这不是 Firebase 和我的项目之间的问题.. .
我知道这里的内容是重复的,但我在其他所有论坛中都没有找到适合我的内容。
对不起,我的英语不是最好的......
请帮忙。谢谢
【问题讨论】:
-
你是如何创建
Home的?正如错误消息非常清楚地指出的那样,您需要在其上调用.environmentObject以注入user。