我正在尝试检查用户名是否已被占用。为此,当用户注册时,其用户名将添加到单独的节点“ taken_usernames”
然后我编写了函数:
func isUserNameTaken(username: String) -> Bool {
var available = true
Database.database().reference().child("taken_usernames").child(username).observeSingleEvent(of: .value) { (snapshot) in
if snapshot.exists() {
SVProgressHUD.dismiss()
self.showLoginError("Username Taken. Please Try Another")
available = false
}
}
return available
}
当按下注册按钮时,我创建了一个保护声明:
@objc func register() {
guard isFormValid() else { return }
guard isUserNameTaken(username: registerView.usernameTextField.text!) else { return }
...}
但是,我收到警告,说用户名已被使用,但是该功能的其余部分仍在运行,因此使用重复的用户名创建了一个新用户。为什么会这样?