1

Ich bin derzeit versucht, die Benutzer Informationen zu Firebase Datenbank zu schreiben, nachdem die Benutzerfunktion erstellen mit FIRAuth.auth()?.createUserSchreiben von Benutzerdaten auf Firebase Nach Erstellen eines neuen Benutzerkontos

Unter dieser Funktion versuche ich, wie diese die Daten in die Datenbank einfügen :

FIRAuth.auth()?.createUser(withEmail: self.emailField.text!, password: self.passwordField.text!) { (user, error) in 

       if error == nil 

       { 
        let email = self.emailField.text 
        let firstName = self.firstnameField.text 
        let lastName = self.lastnameField.text  


        self.ref.child((user?.uid)!).setValue(["firstName": firstName,"lastName": lastName,"email": email])    
        self.performSegue(withIdentifier: "createaccountLandingPage", sender: sender) 
       } 

Es kann auch wichtig sein, unter meiner Ansicht-Controller zu erwähnen, dass ich den Verweis auf die Datenbank zu erstellen:

var ref = FIRDatabase.database().reference().child("users") //root database

Meine Steckdosen sind alle richtig, aber ich bin immer diese Fehlermeldung:

Thread 1: signal SIGABRT

Irgendwelche Vorschläge auf, was ich falsch tun kann?

EDIT ** Hier ist mein Code in der Registrierung View-Controller

import UIKit 
import Firebase 
import FirebaseDatabase 

class CreateAccountViewController: UIViewController { 

    var ref = FIRDatabase.database().reference().child("users") //root database 

@IBOutlet weak var firstnameField: UITextField! 
@IBOutlet weak var lastnameField: UITextField! 
@IBOutlet weak var emailField: UITextField! 
@IBOutlet weak var passwordField: UITextField! 
@IBOutlet weak var confirmpasswordField: UITextField! 
@IBOutlet weak var createAccountButton: UIButton! 


override func viewDidLoad() { 

    super.viewDidLoad() 

    if (FIRAuth.auth()?.currentUser) != nil 
    { 

    } 
    else 
    { 

    } 

    // Do any additional setup after loading the view. 
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 

    // Dispose of any resources that can be recreated. 

} 

@IBAction func createAccountAction(_ sender: AnyObject) 

{ 

    if self.confirmpasswordField.text != self.passwordField.text 

    { 

    } 

    else 

    { 
     FIRAuth.auth()?.createUser(withEmail: self.emailField.text!, password: self.passwordField.text!) { (user, error) in 

      if error == nil 

      { 

       let user = FIRAuth.auth()?.currentUser.uid 
       let email = self.emailField.text 
       let firstName = self.firstnameField.text 
       let lastName = self.lastnameField.text 

       self.ref.child("users").child("\(user)").setValue(["firstName": firstName,"lastName": lastName,"email": email]) 


       self.performSegue(withIdentifier: "createaccountLandingPage", sender: sender) 

      } 

      else 

      { 
       let alertController = UIAlertController(title: "Oops!", message: error?.localizedDescription, preferredStyle: .alert) 

       let defaultAction = UIAlertAction(title: "OK", style: .cancel, handler: nil) 
       alertController.addAction(defaultAction) 

       self.present(alertController, animated: true, completion: nil) 

      } 
     } 
    } 
} 

EDIT *** Hier ist ein Screenshot des Fehlers

EDIT **** hier ist ein Screenshot von meinem podfile und wenn es aktualisiert wird, erhalte ich keine Fehler im Terminal.

EDIT ***** Screenshots der Konsole.

1stScreenshotConsole 2ndScreenshotConsole

+0

Erhalten Sie den gleichen Fehler, wenn Sie das self.performegue Zeug herausnehmen? –

+0

@CyrilIvarGarcia yeah:/aber wenn ich den Datenbankkram raushole, bekomme ich keinen Fehler .. sollte ich eine separate Funktion erstellen, um es vielleicht zu tun? (das ist Sarahs Freund, wir arbeiten gemeinsam daran) –

+0

Okay ich sehe, ich bin neugierig zu sehen, wo du den Code blockierst. –

Antwort

0

Sie haben wie diese dann so ich die ganze schrieb

Ref = FIRDatabase.database().reference() 

Sie initialisieren Ihre Datenbank in Ihrem viewDidLoad

Var ref: FIRDatabaseReference! 

einen Verweis auf Ihre Datenbank erstellen Code unten, entschuldigen Sie die Syntaxfehler, weil ich Ihre Frage auf einem iPad beantworte.

import UIKit 
import Firebase 
import FirebaseDatabase 

class CreateAccountViewController: UIViewController { 

    var ref = FIRDatabaseReference! //create a reference for your database 


@IBOutlet weak var firstnameField: UITextField! 
@IBOutlet weak var lastnameField: UITextField! 
@IBOutlet weak var emailField: UITextField! 
@IBOutlet weak var passwordField: UITextField! 
@IBOutlet weak var confirmpasswordField: UITextField! 
@IBOutlet weak var createAccountButton: UIButton! 


override func viewDidLoad() { 

    super.viewDidLoad() 

//initialize your database 
ref = FIRDatabase.database().reference() 
     // Do any additional setup after loading the view. 
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 

    // Dispose of any resources that can be recreated. 

} 

@IBAction func createAccountAction(_ sender: AnyObject) 

{ 

    if self.confirmpasswordField.text != self.passwordField.text 

    { 

    } 

    else 

    { 
     FIRAuth.auth()?.createUser(withEmail: self.emailField.text!, password: self.passwordField.text!) { (user, error) in 

      if error == nil 

      { 
       let user = FIRAuth.auth()?.currentUser.uid //get the users UID after registering 
       let email = self.emailField.text 
       let firstName = self.firstnameField.text 
       let lastName = self.lastnameField.text 

       self.ref.child("users").child("\(user!)").setValue(["firstName": "\(firstName!)", "lastName": "\(lastName!)", "email": "\(email!)"]) 

       self.performSegue(withIdentifier: "createaccountLandingPage", sender: sender) 

      } 

      else 

      { 
       let alertController = UIAlertController(title: "Oops!", message: error?.localizedDescription, preferredStyle: .alert) 

       let defaultAction = UIAlertAction(title: "OK", style: .cancel, handler: nil) 
       alertController.addAction(defaultAction) 

       self.present(alertController, animated: true, completion: nil) 

      } 
     } 
    } 
} 
+0

Vielen Dank dafür! Ich habe nicht bemerkt, als ich die IOS Lese- und Schreibanleitung für den Firebase gelesen habe, dass die Ref.FIRDatabase.Database(). Reference(), die benötigt wurde, um in Sicht zu gehen, geladen wurde. Allerdings bekomme ich immer noch Fehler bei der Verwendung der Codezeile: self.ref.child ("Benutzer) .child ((user? .uid)!). SetValue ([" firstName ": firstName," lastName ": lastName, "email": email]) –

+0

Können Sie den Benutzer mindestens registrieren? –

+0

@cyrillvargarcia ja –

Verwandte Themen