[英]Checking to see if username exists in firebase DB.
我正在尝试通过UI中的@IBAction从用户获取用户名。
我的目标是检查用户名是否已在Firebase中存在。 如果不存在,请注册。 如果确实存在,我想做一些其他的事情。
这是我的代码。
@IBAction func enterUsername(){
let enteredUsername = usernameText!.text!
let namesRef = ref.childByAppendingPath("/usernames/\(enteredUsername)")
namesRef.observeEventType(.Value, withBlock: {
snap in
if (snap.value is NSNull){
let userNameAndUUID = ["Username" : enteredUsername, "UUID" : self.appDelegate.UUID]
namesRef.setValue(userNameAndUUID)
print("first block")
}else {
print("second block")
//do some other stuff
}
})
}
我遇到的问题是,如果用户名是唯一的(不存在),则if / else的两个打印语句都在运行。 输出:第一块第二块
如果名称不是唯一的,则它会正确跳过if / else的if部分。
为什么if / else语句的两个部分都运行?
谢谢你的帮助。
您所看到的行为确实是有意的。 由于要附加观察者,因此第一个if块将以唯一的名称运行,但是在该块内,您需要设置一个值。
这将再次触发回调,这一次将遍历else块。
更改此代码的正确方法是使用observeSingleEventOfType
,以便您只读取一次该值,而不会连续观察它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.