我的目标是将“
Session
”对象传递给视图,以便我可以访问其内容。目前,我将 session
实例作为 environmentObject
传递给 TabView
,以便所有选项卡都可以访问此会话。
这是我的课程:
class Session: ObservableObject {
let auth = Auth.auth()
@Published var signedIn = false
var isSignedIn: Bool {
return auth.currentUser != nil
}
}
在我的应用程序结构中,我有
TabView
并将 session
放在 environmentObject
修饰符中:
struct app: App {
@StateObject var session = Session()
TabView {
// Tabs redacted for easy viewing
}
.environmentObject(session)
}
最后是一个视图,我希望在以下位置使用这个
session
环境对象:
struct NewListView: View {
@EnvironmentObject var session: Session
var body: some View {
HStack {
Text(session.$signedIn)
}
}
}
我期待这能起作用。 相反,我收到此错误:
初始化程序“init(_:)”要求“Published.Publisher”符合“StringProtocol”
我对环境变量的理解是否错误?
删除$
struct NewListView: View {
@EnvironmentObject var session: Session
var body: some View {
HStack {
Text("\(session.signedIn)")
}
}
}