我正在尝试允许用户通过搜索用户名来开始游戏并关注其他用户。我需要确保具有该用户名的用户存在。我正在使用以下代码,但是尽管if调用了,else但在应调用时却没有被调用。
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" } }
轻松解决:
不要使用.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) } })