我想将布尔状态保存到Firebase数据库中的用户配置文件

时间:2018-09-07 13:18:40

标签: ios swift firebase firebase-realtime-database

因此,我已成功将用户电子邮件保存到我的Firebase数据库中,但是当他们按保存时,我还想在另一个视图中将状态保存到该特定用户。这都是一个测试应用程序,可以使用Firebase数据库和用户身份验证来吸引我的注意。

现在,当用户向应用程序注册时,他们将登录到数据库中。

class SignupViewController: UIViewController {

    let ref = Database.database().reference().root

    @IBOutlet weak var firstNameEntryField: UITextField!
    @IBOutlet weak var lastNameEntryField: UITextField!
    @IBOutlet weak var emailEntryField: UITextField!
    @IBOutlet weak var passwordEntryField: UITextField!

    override func viewDidLoad() {
        super.viewDidLoad()
    }

    @IBAction func signupPressed(_ sender: UIButton) {

        Auth.auth().createUser(withEmail: emailEntryField.text!, password: passwordEntryField.text!) { (user, error) in
            if error == nil {

                //Show SVProgressHUD
                SVProgressHUD.show()

                //save User to Database
                self.ref.child("users").child((user?.user.uid)!).setValue(self.emailEntryField.text!)

                //Dismiss SVProgressHUD
                SVProgressHUD.dismiss()

                //move to info view controller
                self.performSegue(withIdentifier: "signupToInfo", sender: self)

            } else {

                print("Signup Unsuccessul")
                let alertController = UIAlertController(title: "Error", message: error?.localizedDescription, preferredStyle: .alert)
                let defaultAction = UIAlertAction(title: "OK", style: .cancel, handler: nil)

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

            }
        }
    }  
}

enter image description here

在另一个视图上,我尝试在注册后将布尔状态保存到当前用户配置文件中,但是我知道我可能做的不正确。正如您现在所看到的,它仅保存一个实例,因此,如果我注册另一个用户并将“ stylist”布尔值保存为true,它将覆盖当前的false状态。但是我希望每个注册用户都有一个与其帐户相关联的设计师布尔状态。

enter image description here

class InfoViewController: UIViewController {

    let ref = Database.database().reference()

    var isStylist : Bool = false

    @IBAction func stylistSwitch(_ sender: UISwitch) {
        if isStylist == false {
            isStylist = true
            print(isStylist)
        } else {
            isStylist = false
            print(isStylist)
        }
    }


    override func viewDidLoad() {
        super.viewDidLoad()

    }

    @IBAction func saveUserProfile(_ sender: UIButton) {


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

            //show SVProgressHUD
            SVProgressHUD.show()

            //save Stylist state to Database
            self.ref.child("stylists").setValue(self.isStylist)

            //dismiss SVProgressHUD
            SVProgressHUD.dismiss()

            //Segue to ProfileViewController
            performSegue(withIdentifier: "infoToProfile", sender: self)

        } else {
            print("Error")
        }

    }
}

我们将不胜感激,或者如果有人有任何指向良好资源的链接,我们将不胜感激。谢谢。

1 个答案:

答案 0 :(得分:1)

您只保存uid的键值,但是您想要保存这样的字典

let newUserInfo = [
    "email":self.emailEntryField.text!,
    "state":true
]  

self.ref.child("users").child(user!.uid).setValue(newUserInfo, withCompletionBlock: { (error, ref) in

}

此后,您可以使用路径 users-> uid-> state 更改该值

self.ref.child("users").child("\(user!.uid)/state").setValue(true)