1

Ich versuche, einige Zeichenfolgen aus der Datenbank nach der Anmeldung abzurufen, aber mein Code endet nie mit dem Ausführen von allem. Hier ist sie unter:Abrufen von Daten 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 (Typ) nie endet gedruckt werden, aber alles andere tut. Ich bin mir nicht sicher, warum das passiert.

enter image description here

Antwort

2

Ihr Fehler ist nicht, wenn Sie den Benutzer abzurufen, aber wenn Sie die Daten in der Datenbank festgelegt.

Sie können in Ihrer Datenbank finden Sie in der Benutzerschlüssel ist Optional ("YOUR_KEY") aber es sollte YOUR_KEY sein.

Sie müssen die userId vor dem Festlegen der Benutzerdaten auspacken.

So etwas:

let user = Auth.auth().currentUser 

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

    // Use the userId 
} 
+0

Danke, arbeitete dieses perfekt. –