我想在登录成功后切换到一个新的视图,它会保存登录状态,当我关闭App再次打开时,不需要再次登录。我用联合收割机。希望你能帮助我。由于
这是我的完整代码。希望你能帮助我
Firebase会告诉你…你只要问就行了。你应该这样问。
let user = Auth.auth().currentUser
if let user = user {
// User is logged in
}
这些是FirebaseAuth iOS文档(了解更多信息)
你应该在LoginViewModel
的init中调用这个
init() {
let user = Auth.auth().currentUser
if let user = user {
// User is logged in
session = User(uid: user.uid,
email: user.email)
} else {
session = nil
}
}
使LoginViewModel
变量session
@Published
像这样
class LoginViewModel: ObservableObject {
...
@Published var session: User?
...
}
阅读Published
类型在这里
更新你应该把这个块添加到LoginView
的signIn()
函数中,而不是添加到session.isLoggedIn.toggle()
中。
我还建议删除isLoggedin
变量,您应该查看session
中的user
对象,以检查它是否为nil。
func signIn () {
loading = true
error = false
session.signIn(email: email, password: password) { (result, error) in
self.loading = false
if error != nil {
self.error = true
self.loading = false
} else {
guard let uid = result?.user.uid,
let email = result?.user.email else {
return
}
session.session = User(uid: uid, email: email)
}
}
}
这是我添加的signUp()
。虽然我建议把它放在一个单独的页面上。
func signUp (email: String,
password: String,
handler: @escaping AuthDataResultCallback) {
Auth.auth().createUser(withEmail: email, password: password, completion: handler)
}
最后,我建议将所有登录逻辑移动到viewModel中,而不是视图中…这就是viewModels存在的原因。
标题>