Tom*_*Fox 4 snapshot firebase swift firebase-realtime-database
我正在尝试允许用户通过搜索用户名来启动游戏并关注其他用户.我需要能够确保具有该用户名的用户存在.我正在使用以下代码但是虽然它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 {
}
Run Code Online (Sandbox Code Playgroud)
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"
}
}
Run Code Online (Sandbox Code Playgroud)
轻松修复:
不要使用.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)
}
})
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4924 次 |
最近记录: |