簡體   English   中英

Swift 4 Firebase Auth自定義錯誤代碼

[英]Swift 4 Firebase Auth custom error 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"
        }
    }
}

並在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ő"
}
}

如果我嘗試創建一個新用戶,則可以正常工作,但是當我嘗試使用錯誤的密碼(或無效的用戶名)登錄時,它會顯示

“線程1:致命錯誤:展開一個可選值時意外發現為零”

self.errorLabel.text = myError.errorMessage

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

如果我除去標簽,則它工作正常,並在控制台中顯示錯誤代碼。

您的errorLabel為零。 其結果是,當你嘗試分配myError.errorMessageerrorLAbel.text崩潰。 當前代碼的問題是,訪問其文本值時不會實例化errorLabel。

創建新用戶時,您的應用程序可以正常工作,因為您沒有為errorLabel分配任何內容。

從快照中,我假設您正在使用xib或情節提要。 然后將errorLabel@IBOutlet斷開連接。 您正在初始化之前訪問標簽。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM