是否可以将应用程序文件中的 EnvironmentObject 用于新的 SwiftUI 2.0 项目?
我正在使用以下代码,但出现错误:
致命错误:未找到身份验证类型的 ObservableObject。用于身份验证的 View.environmentObject(_:) 作为此视图的祖先可能会丢失。:文件 SwiftUI,第 0 行
我假设此错误是因为我尚未在任何视图中使用 .environmentObject 修饰符,因此尚未将 UserAuth 放置在环境中。
但是我希望这个 loginStatus 在我的应用程序中的任何地方都可用,并且能够在我的应用程序的任何地方在 UserAuth 类的一个常见实例上使用函数 getLoginStatus。
我希望把它放在我的 rootView 中并让它适用于所有视图,但不知道如何使用我的应用程序文件中的结构来做到这一点。
enum LoginStatus {
case signedIn
case signedOut
}
import SwiftUI
@main
struct ExampleApp: App {
@EnvironmentObject var userAuth: UserAuth
init() {
userAuth.getLoginStatus()
}
var body: some Scene {
WindowGroup {
switch userAuth.loginStatus {
case .signedIn:
Text("Signed In")
case .signedOut:
Text("Signed Out")
}
}
}
}
import SwiftUI
class UserAuth: ObservableObject {
@Published var loginStatus: LoginStatus = .undetermined
func getLoginStatus() {
// asynchrounously set loginStatus
}
}