我遇到的问题如下,当我登录用户并将数据插入数据库时,一切正常,但当我关闭部分并再次启动部分时,数据加倍而没有插入任何内容。造成这种情况的原因是什么?
登录方法
@IBAction func loginButton(_ sender: Any) {
if validar() {
try! FIRAuth.auth()!.signOut()
FIRAuth.auth()?.signIn(withEmail: emailTextField.text!, password: passwordTextField.text!, completion: { (user, error) in
if user != nil {
self.performSegue(withIdentifier: "loginToPasswordBag", sender: self)
} else {
self.emailTextField.shake()
self.passwordTextField.shake()
}
})
}
}
保存数据方法
@IBAction func addPassword(_ sender: Any) {
FIRAuth.auth()?.addStateDidChangeListener({ (auth, user) in
if let user = user {
var password = [String:String]()
password["password"] = self.passwordTextField.text!
password["name"] = self.namePasswordTextField.text!
password["uid"] = user.uid
self.rootRef.child("passwords").childByAutoId().setValue(password)
}
})
}
当我再次登录时,最后插入的对象在数据库中重复
答案 0 :(得分:0)
重启应用时,addStateDidChangeListener
会触发预期的行为。它还可能在应用程序运行时定期触发。
因此,您不应该依赖addStateDidChangeListener
只会在您拨打signInWithEmail
时触发的逻辑。