1

サインイン後にデータベースからいくつかの文字列を取得しようとしていますが、コードがすべて実行されることはありません。ここでそれは以下の通りです:データの取得Firebase Swift 3

@IBAction func SignIn(_ sender: Any) { 
    FIRAuth.auth()?.signIn(withEmail: EmailTextField.text!, password: PasswordTextField.text!, completion: { 
     (user, error) in 
     if error == nil { 
      print("no error") 
      if let user = FIRAuth.auth()?.currentUser { 
       print("no error") 
       //if user.isEmailVerified == true { 
        let ref = FIRDatabase.database().reference() 
        let userID = FIRAuth.auth()?.currentUser?.uid 
        ref.child("users").child(userID!).observeSingleEvent(of: .value, with: { snapshot in 
         print("no error") 
         let snapDict = snapshot.value as? NSDictionary 
         let type = snapDict?["type"] as? String ?? "" 
         print(type) 
       }) 
       //} else { 
        //error email isnt verified 
       //} 
      } 
     } else { 
      print(" error") 
      if let errCode = FIRAuthErrorCode(rawValue: error!._code) { 
       switch errCode { 
       case .errorCodeInvalidEmail: break 
        //invalid email 
       case .errorCodeUserNotFound: break 
        //user doesnt exist 
       case .errorCodeWrongPassword: break 
        //incorrect password 
       default: break 
        //error occured 
       } 
      } 
     } 
    }) 
} 

print(タイプ)は印刷されませんが、それ以外はすべて印刷されます。なぜこれが起こっているのか分かりません。ユーザーを取得するときがありますが、データベースにデータを設定する際

enter image description here

答えて

2

あなたのエラーではありません。

あなたは、ユーザーのキーがオプション(「YOUR_KEY」)ですが、それは、YOUR_KEYである必要があり、データベースに見ることができます。

ユーザーデータを設定する前に、userIdのラップを解除する必要があります。

そのような何か:

let user = Auth.auth().currentUser 

if let user = user { 
    let userId = user.uid; 

    // Use the userId 
} 
+0

が、これは完全に働いた、ありがとうございます。 –

関連する問題