简体   繁体   English

Swift 4 Firebase Auth自定义错误代码

[英]Swift 4 Firebase Auth custom error code

I tried to define custom error codes to Firebase Auth with this code: 我尝试使用以下代码为Firebase Auth定义自定义错误代码:

extension AuthErrorCode {
    var errorMessage: String {
        switch self {
        case .emailAlreadyInUse:
            return "Ezzel a névvel már létezik rendezvény"
        case .invalidEmail:
            return "Hibás formátum: Rendezvény neve. Kérlek ne használj speciális karaktereket és szóközt"
        case .userNotFound:
            return "Ezzel a névvel nem létezik rendezvény"
        case .networkError:
            return "Hálózat nem elérhető. Próbáld meg később"
        case .weakPassword:
            return "A jelszó túl gyenge. Legalább 6 karakter hosszúnak kell lennie."
        case .wrongPassword:
            return "Hibás jelszó"
        default:
            return "Unknown error occurred"
        }
    }
}

And after reach this codes in checkLogin() method: 并在checkLogin()方法中达到以下代码后:

func checkLogin(){
if eventNameTextField.text != "" && passwordTextField.text != "" {
    let eventname = eventNameTextField.text! + "@somemail.com"

    Auth.auth().signIn(withEmail: eventname, password: passwordTextField.text!, completion: { (user, error) in
        if user != nil {
            self.performSegue(withIdentifier: "goToMain", sender: self)
        }
        else{
            if let myError = AuthErrorCode(rawValue: (error?._code)!) {
                self.errorLabel.text = myError.errorMessage
                print(myError.errorMessage)
            }
        }
    })
}
else {
    self.errorLabel.text = "A mezők kitöltése kötelező"
}
}

If I try to create a new user, it's work perfectly, but when I try to login with wrong password (or with invalid username), it says 如果我尝试创建一个新用户,则可以正常工作,但是当我尝试使用错误的密码(或无效的用户名)登录时,它会显示

"Thread 1: Fatal error: Unexpectedly found nil while unwrapping an Optional value" “线程1:致命错误:展开一个可选值时意外发现为零”

to self.errorLabel.text = myError.errorMessage self.errorLabel.text = myError.errorMessage

https://i.stack.imgur.com/HGqov.png https://i.stack.imgur.com/HGqov.png

If I remove the label, it's working perfectly and show me the error code in the console. 如果我除去标签,则它工作正常,并在控制台中显示错误代码。

Your errorLabel is nil. 您的errorLabel为零。 As a result, when you try to assign myError.errorMessage to errorLAbel.text it crashes. 其结果是,当你尝试分配myError.errorMessageerrorLAbel.text崩溃。 The problem with your current code is that the errorLabel is not instantiated when you access its text value. 当前代码的问题是,访问其文本值时不会实例化errorLabel。

When you create a new user your app works because you don't assign anything to errorLabel . 创建新用户时,您的应用程序可以正常工作,因为您没有为errorLabel分配任何内容。

From your snapshot I'm assuming you are using xib or storyboard. 从快照中,我假设您正在使用xib或情节提要。 Then errorLabel is not connected with @IBOutlet connect this. 然后将errorLabel@IBOutlet断开连接。 You are accessing label before initialisation. 您正在初始化之前访问标签。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM