[英]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.