我正在创建一个包含 Firebase 的 SwiftUI 应用程序以启用登录帐户,非常简单,只是一个带有密码和电子邮件字段的 ui 表单,然后是一个提交按钮。用户登录后,我将 firebase 用户对象存储在 EnvironmentObject 中,以便其余视图可以访问它。该应用程序目前的问题是,一旦用户登录并且用户数据存储在 EnvironmentObject 中,视图应该更新到更改后的状态以显示不同的屏幕,但似乎视图仍然认为 EnvironmentObject等于零。视图不会像它们对状态变量那样自动更改为 EnvironmentObject 中的更新吗?
我已经确保 EnvironmentObject 设置正确并传递给预览和 SceneDelegate
通过在登录时将帐户信息打印到控制台来确保应用程序确实成功登录了用户,但视图本身只会为帐户信息显示 nil,它似乎不会使用用户信息访问更新的 EnvironmentObject。
import SwiftUI
import Firebase
import Combine
struct ContentView: View {
@EnvironmentObject var session: SessionStore
@State var emailTextField: String = ""
@State var passwordTextField: String = ""
@State var loading = false
@State var error = false
var body: some View {
VStack {
if (session.session != nil) {
Home()
} else {
Form {
TextField("Email", text: $emailTextField) …Run Code Online (Sandbox Code Playgroud)