【发布时间】:2021-07-03 01:27:49
【问题描述】:
在我的 UserViewModel 中,我有一个密码重置功能。这可行,但我希望它返回我的主视图有关错误的信息,或者它是否成功。遗憾的是,仅返回默认值,然后在函数本身中更新这些值。
func passwordResetRequest(_ email: String) -> (successful: Bool, errorMsg: String) {
var status = false
var errorMessage = "0"
Auth.auth().sendPasswordReset(withEmail: email) { error in
if error != nil {
errorMessage = error?.localizedDescription ?? "unknown error"
print("In UserViewModel.PasswordResetRequest(): \(errorMessage)")
status = false
} else {
print("success")
status = true
}
}
return (status,errorMessage)
}
这是视图中的代码:
VStack(spacing: 13){
HStack(spacing: 0) {
Text("Forget your password? ")
Button(action: {
let result = user.passwordResetRequest(email)
print(result)
if (result.successful) {
showingResetPasswordAlert = true
} else {
self.errorMsg = result.errorMsg
print(result.errorMsg)
print(errorMsg)
print("from button^")
showingErrorMsg = true
}
}, label: {
Text("Reset Password")
.font(.callout)
.foregroundColor(.black)
.bold()
}).alert(isPresented: $showingResetPasswordAlert) {
Alert(title: Text("Important message"), message: Text("Password Reset Email will be sent to \(email)"), dismissButton: .default(Text("Got it!")))
}
.alert(isPresented: $showingErrorMsg) {
Alert(title: Text("Important message"), message: Text("Error: \(self.errorMsg) occured during the password reset for the email: \(email)"), dismissButton: .default(Text("Got it..")))
}
}
这是控制台输出:
(successful: false, errorMsg: "0")
0
0
from button^
In UserViewModel.PasswordResetRequest(): An email address must be provided.
所以,问题是 passwordResetRequest 的第 6 行似乎不起作用,或者似乎在此块运行之前调用了 return 语句。
【问题讨论】:
标签: swift firebase swiftui firebase-authentication