鉴于以下设置:
环境变量 UserState
class UserState: ObservableObject {
@Published var loggedIn = Auth.auth().currentUser != nil
}
Run Code Online (Sandbox Code Playgroud)
UserState 作为变量 SceneDelegate
class SceneDelegate: UIResponder, UIWindowSceneDelegate {
...
//creating the variable
var userState = UserState()
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
window.rootViewController = UIHostingController(rootView: ContentView().environmentObject(userState))
}
...
}
Run Code Online (Sandbox Code Playgroud)
我现在可以通过声明在 SwiftUI 视图中完美地读/写这个变量
struct ProfileTab: View {
@EnvironmentObject var userState: UserState
var body: some View {
// here I could easily read/write to userState
}
}
Run Code Online (Sandbox Code Playgroud)
到现在为止还挺好。但是:在 SwiftUI 视图之外写入这个变量的正确方法是什么?例如,来自类或类扩展。
例子
extension …Run Code Online (Sandbox Code Playgroud)