使用用户名而不是电子邮件进入ios应用程序和firebase

这是我的情况,我正在使用的Firebase作为一个iOS应用程序的数据库。

用户可以通过电子邮件login:

@IBAction func signInButtonPressed(_ sender: UIButton) { if let email = emailField.text, let password = passwordField.text { FIRAuth.auth()?.signIn(withEmail: email, password: password) { (user, error) in if let error = error { let alertController = UIAlertController(title: "Login or password incorrect", message: "", preferredStyle: UIAlertControllerStyle.alert) alertController.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.default,handler: nil)) self.present(alertController, animated: true, completion: nil) } else { print("AUTH: EMAIL AUTH SUCCESSFUL") User.currentUserId = user?.uid User.startTrackingCurrentUser() self.performSegue(withIdentifier: "ToFeed", sender: nil) } } } } 

这一切都是完美的。

但是,我希望用户使用他们的用户名login,而不是他们的电子邮件。

我在AUth中创build用户,数据也被复制到具有taht结构的数据库中:

 --name of db ----posts ----users ------username ------email ------id 

这怎么可能呢?

非常感谢您的帮助!

—–编辑—–

通过添加这个://开始检查

 @IBAction func textFieldEditingDidChange(_ sender: Any) { FIRDatabase.database().reference().child("users").child(self.emailField.text!).observeSingleEvent(of: .value, with: { (email) in if let userDict = email.value as? [String:AnyObject]{ for each in userDict{ let email = each.1 as! String } } if email.exists(){ print(email) }else{ print("USER NOT EXIST") } }) } 

当input正确的用户名时,我可以在控制台中获得这个显示:

 Snap (username written) { username = username; email = "email@domain.net"; id = 8mbwfwMW0kZ4ip5mhyvEySxm4iI2; } 

我该如何获得电子邮件的价值呢?

所有这一切我都在挣扎,任何帮助都将是惊人的!

谢谢你的帮助和时间!