2017-02-01 8 views
1

私はSwiftとFirebaseを初めて使用しています。パスワードの長さが6文字以上、電子メールが有効でないなど、アカウント作成ビューコントローラで再表示したいラベルをいくつか作成しました。 if、elseステートメントを作成する方法がわかりません.Firebaseには既に何かが組み込まれています。これもSwiftのためのものですが、Androidの情報はわかりますが、実際は分かりません。Firebase Authority

これは現在のところ私のコードです。

@IBAction func nextTapped(_ sender: Any) { 

    guard let email = emailField.text, !email.isEmpty else { 
     return 
    } 

    guard let pwd = confirmPass.text, !pwd.isEmpty, confirmPass.text == PassField.text else { 
     passMatch.isHidden = false 
     return 
    } 

    FIRAuth.auth()?.createUser(withEmail: email, password: pwd, completion: { (user, error) in 
     if error != nil { 
      self.emailTaken.isHidden = false 
      self.emailTaken.text = FirebaseAuthException().getReason() 
     } else { 
      if let user = user { 
       let userData = ["provider": user.providerID] 
       self.completeSignIn(id: user.uid, userData: userData) 
      } 
     } 
    }) 
} 
+0

エラーが発生したため、self.emailTaken.text = FirebaseAuthException()。getReason()を削除しました。 – Willstarr

答えて

1

私は実際にこれについて多くのエラー処理を考え出しました。誰かが興味を持ち、同じ問題に遭遇した場合は、これに従ってください。私はスナップショットでより良い方法があると確信していますが、これは最も基本的な問題を成し遂げます。

@IBAction func nextTapped(_ sender: Any) { 


    guard let email = emailField.text, !email.isEmpty else { 
     return 
    } 

    guard let pwd = confirmPass.text, !pwd.isEmpty, confirmPass.text == PassField.text else { 
     passMatch.isHidden = false 
     return 
    } 

    passMatch.isHidden = true 

    FIRAuth.auth()?.createUser(withEmail: email, password: pwd, completion: { (user, error) in 
     if error != nil { 
      if let errorCode = FIRAuthErrorCode(rawValue: (error?._code)!) { 
       switch errorCode { 
       case .errorCodeNetworkError: 
        print("A network error occurred") 
       case .errorCodeInvalidEmail: 
        self.emailTaken.isHidden = false 
       case .errorCodeEmailAlreadyInUse: 
        self.emailTaken.isHidden = false 
       case .errorCodeWeakPassword: 
        self.passRule.isHidden = false 
       default: 
        print("Create User Error: \(error)") 
        } 
      } 
     } else { 
      if let user = user { 
       let userData = ["provider": user.providerID] 
       self.completeSignIn(id: user.uid, userData: userData) 
      } 
     } 
    }) 
} 
2

Firebaseは、彼らが提供し、使用することができますエラーのリストがあり、ここで、あなたのためのほとんどすべてを処理します。 https://firebase.google.com/docs/auth/ios/errors#method_specific_error_codes

それとも、ちょうどここのようなNSLocalizedDescriptionを表示することができます。

FIRAuth.auth()?.signIn(withEmail: email, password: password) { (user, error) in 
     if let error = error as? NSError{ 
      if let errorMessage = error.userInfo["NSLocalizedDescription"] as? String { 
       //Show Alert with message provided in 'errorMessage' 
      } else { 
       //Show General Alert 
      } 
     } else if let user = user { 
      //Logged in 
     } else { 
      // Unknow State 
    } 
関連する問題