因此,我已成功将用户电子邮件保存到我的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)
}
}
}
}
在另一个视图上,我尝试在注册后将布尔状态保存到当前用户配置文件中,但是我知道我可能做的不正确。正如您现在所看到的,它仅保存一个实例,因此,如果我注册另一个用户并将“ stylist”布尔值保存为true,它将覆盖当前的false状态。但是我希望每个注册用户都有一个与其帐户相关联的设计师布尔状态。
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")
}
}
}
我们将不胜感激,或者如果有人有任何指向良好资源的链接,我们将不胜感激。谢谢。
答案 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)