我正在尝试允许用户通过搜索用户名来启动游戏并关注其他用户。我需要能够确保具有该用户名的用户存在。我使用的是以下代码,但是虽然if
被调用,else
在调用时不会被调用。
let checkWaitingRef = Firebase(url:"https://test.firebaseio.com/users")
checkWaitingRef.queryOrderedByChild("username").queryEqualToValue("\(username!)")
.observeEventType(.ChildAdded, withBlock: { snapshot in
if snapshot.value.valueForKey("username")! as! String == username! {
} else {
}
JSON数据树
{
"097ca4a4-563f-4867ghj0-6209288bd7f02" : {
"email" : "test1@tes1.com",
"uid" : "097ca4a4-563f-4867ghj0-6209288bd7f02",
"username" : "test1",
"waiting" : "0"
},
"55a8f979-ad0d-438u989u69-aa4a-45adb16175e7" : {
"email" : "test2@test2.com",
"uid" : "55a8f979-ad0d-438u989u69-aa4a-45adb16175e7",
"username" : "test2",
"waiting" : "0"
}
}
答案 0 :(得分:8)
轻松修复:
不要使用.childAdded,因为当查询找不到任何内容时,块将不会执行。
而是使用.Value并检查NSNull
let checkWaitingRef = Firebase(url:"https://test.firebaseio.com/users")
checkWaitingRef.queryOrderedByChild("username").queryEqualToValue("\(username!)")
.observeEventType(.Value, withBlock: { snapshot in
if ( snapshot.value is NSNull ) {
print("not found)")
} else {
print(snapshot.value)
}
}