2017-04-21 133 views
0

我的问题是下面的,当我登录的用户和数据插入到数据库中一切正常,但是当我再次关闭部分和启动部分数据,而不必插入任何一倍。这是什么原因?火力地堡被加倍数据

登录其实现方法具

@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

我不知道我的理解。但是,当您重新启动应用程序时,会出现'addStateDidChangeListener'触发的行为。它也可能会在应用程序运行时定期触发。所以,你不应该依赖于逻辑'当你调用'signInWithEmail' addStateDidChangeListener'才会触发。 –

+0

喔,我认为你是对的,我想,如果一个视图改变,处理程序将不再火灾 – luistejadaa

回答

0

预期行为addStateDidChangeListener火灾时,你复制重新启动应用。它也可能会在应用程序运行时定期触发。

所以,你不应该依赖于逻辑,当你调用signInWithEmailaddStateDidChangeListener才会触发。