数据未显示在firebase数据库中

时间:2018-01-26 21:51:32

标签: ios swift firebase firebase-realtime-database

我试图通过创建帐户视图控制器添加用户数据,该控制器包含所有UITextFields(密码,确认密码,名字,姓氏,电话号码)。当点击创建帐户按钮时,用户电子邮件显示在firebase网站上的身份验证部分中,但来自名字,姓氏和电话号码文本字段的用户信息不会传递到数据库中。我是iOS开发新手,从未使用过firebase,所以我不确定问题是什么。应用程序运行时没有崩溃。

下面的

是我的创建帐户视图控制器

提前致谢

import UIKit
import FirebaseAuth
import QuartzCore
import FirebaseDatabase
import Firebase

class CreateAccount: UIViewController {

    var refUsers: DatabaseReference!

    @IBOutlet weak var emailTextField: UITextField!
    @IBOutlet weak var passwordTextField: UITextField!
    @IBOutlet weak var confirmPasswordTextField: UITextField!
    @IBOutlet weak var firstNameTextField: UITextField!
    @IBOutlet weak var lastNameTextField: UITextField!
    @IBOutlet weak var phoneNumberTextField: UITextField!

    @IBOutlet weak var alreadyHaveAccountLabel: UILabel!

    @IBAction func loginButtonTapped(_ sender: Any) {

         performSegue(withIdentifier: "showLoginScreen", sender: self)
    }


    override func viewDidLoad() {
        super.viewDidLoad()
        self.refUsers = Database.database().reference().child("Users");
        // Do any additional setup after loading the view.
    }


    override func viewDidAppear(_ animated: Bool) {


        if Auth.auth().currentUser != nil {

            print("success")

            self.presentMainScreen()
        }
    }


    @IBAction func createAccountTapped(_ sender: Any) {

        if let email = emailTextField.text, let password = passwordTextField.text {

            Auth.auth().createUser(withEmail: email, password: password, completion:{ user, error in
                if let firebaseError = error {
                    print(firebaseError.localizedDescription)
                    return
                } else {


                    self.addUser()

                    print("this is the first name:", self.firstNameTextField.text!)
                    print("this is the last name:", self.lastNameTextField.text!)
                    print("this is the phone number" , self.phoneNumberTextField.text!)
                    print("success")
                    self.presentMainScreen()
            }




            })

        }
    }

    func addUser(){
        let key = refUsers.childByAutoId().key
        let user = ["id":key,
                    "FirstName":firstNameTextField.text! as String,
                    "LastName":lastNameTextField.text! as String,
                    "PhoneNumber":phoneNumberTextField.text! as String
                    ]

        refUsers.child(key).setValue(user)
    }


    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


    /*
    // MARK: - Navigation

    // In a storyboard-based application, you will often want to do a little preparation before navigation
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        // Get the new view controller using segue.destinationViewController.
        // Pass the selected object to the new view controller.
    }
    */


    func presentMainScreen(){
        let mainstoryboard = UIStoryboard(name: "Main", bundle: nil)
        let mainTabController = mainstoryboard.instantiateViewController(withIdentifier: "MainTabController") as! MainTabController
        mainTabController.selectedViewController = mainTabController.viewControllers?[0]
        self.present(mainTabController, animated: true, completion: nil)
        //let storyboard:UIStoryboard = UIStoryboard(name:"Main", bundle:nil)
        //let loggedInVC:LoggedInVC = storyboard.instantiateViewController(withIdentifier: "LoggedInVC") as! LoggedInVC
        //self.present(loggedInVC, animated: true, completion: nil)
    }



}

1 个答案:

答案 0 :(得分:0)

试试这个: 而不是设置值使用更新值

let childUpdates = ["/user/\(key)": user]
refUser.updateChildValues(childUpdates)

希望这会有所帮助:)