2016-05-24 7 views
3

Wenn ich versuche, die lesbare, benutzerfreundliche Fehlermeldung von Firebase Benutzeranmeldung zu drucken, fand ich NSError.localizedDiscreption Casue es wird zeigen "finden Sie mehr im Detail".Wie bekomme ich eine Fehlermeldung aus einem NSError von Firebase Auth Login

Und sieht meine Fehlermeldung wie diese, wenn ich print(error)

Befehl
2016-05-23 21:29:33.035 Mission Board[3251:] <FIRAnalytics/INFO> Firebase Analytics enabled 

Optional(Error Domain=FIRAuthErrorDomain Code=17999 "An internal error has occurred, print and inspect the error details for more information." UserInfo={NSUnderlyingError=0x1277e2bb0 {Error Domain=FIRAuthInternalErrorDomain Code=3 "(null)" UserInfo={FIRAuthErrorUserInfoDeserializedResponseKey=<CFBasicHash 0x1288eec60 [0x1a172a150]>{type = immutable dict, count = 3, 

entries => 

    0 : <CFString 0x12890ad60 [0x1a172a150]>{contents = "message"} = <CFString 0x1288eec20 [0x1a172a150]>{contents = "INVALID_EMAIL"} 

    1 : errors = <CFArray 0x12890ad20 [0x1a172a150]>{type = immutable, count = 1, values = (

    0 : <CFBasicHash 0x12890c660 [0x1a172a150]>{type = immutable dict, count = 3, 

entries => 

    0 : reason = invalid 

    1 : message = <CFString 0x128872790 [0x1a172a150]>{contents = "INVALID_EMAIL"} 

    2 : domain = global 

} 



)} 

    2 : code = <CFNumber 0xb000000000001903 [0x1a172a150]>{value = +400, type = kCFNumberSInt64Type} 

} 

}}, error_name=ERROR_INTERNAL_ERROR, NSLocalizedDescription=An internal error has occurred, print and inspect the error details for more information.}) 

, die nicht sehr gut lesbar ist, aber ich fand in den Einträgen 1 Code 0, eine Nachricht mit dem Inhalt „INVALID EMAIL“

ist

Kann ich diesen Teil nur an den Benutzer ausgeben?

Gibt es irgendwelche eingebaute Funktion kann das tun?

+0

Ich denke, Sie müssen den Fehler droht. Benutzer kann dies nicht verstehen. Wenn Sie verschiedene Fehler versuchen, z. B. Kennwort schwach, E-Mail bereits vorhanden, werden Sie feststellen, dass der Fehler im selben Format auftritt. Das Nachrichtenfeld hat die richtige Fehlerursache, aber im Code. Sie können jede Ursache in eine fehlerfreundliche Nachricht oder das meiste davon übersetzen. – ByteArtisan

+0

Wie kann ich es ändern? Ich meine, es ist keine Schnur richtig? –

+0

Ich meine, einige Schalter für jeden möglichen Nachrichteninhalt hinzuzufügen. In diesem Fall sollte "INVALID_EMAIL" in "Ungültige E-Mail-Adresse" übersetzt werden. – ByteArtisan

Antwort

0

Unten Code ist meine Anmeldung Fehlerkontrolle. Ich benutze den KVNProgress-Pod als Warnung.

swift3

import KVNProgress 

FIRAuth.auth()?.createUser(withEmail: self.emailTextLbl.text!, password: self.passwordTextLbl.text!, completion: { (user, error) in 

if error != nil { 

    let error2:NSError = error as! NSError 

    if error2.code == FIRAuthErrorCode.errorCodeInvalidEmail.rawValue { 

     KVNProgress.showError(withStatus: "Invalid Email", completion: nil) 

    }else if error2.code == FIRAuthErrorCode.errorCodeNetworkError.rawValue { 

    KVNProgress.showError(withStatus: "Network Error", completion: nil) 

    }else if error2.code == FIRAuthErrorCode.errorCodeWeakPassword.rawValue { 

    KVNProgress.showError(withStatus: "Weak Password", completion: nil) 

    }else if error2.code == FIRAuthErrorCode.errorCodeEmailAlreadyInUse.rawValue { 

    KVNProgress.showError(withStatus: "Email Already In Use", completion: nil) 

    } 


}else{ 


    // Your code 


} 

}) 

Sie können andere Fehlerkontrollen in "FIRAuthErrorCode" wie Login-Fehlerbehandlung finden.

Verwandte Themen