我正在尝试允许用户通过搜索用户名来启动游戏并关注其他用户.我需要能够确保具有该用户名的用户存在.我使用以下代码但是虽然调用了if,但是当它应该调用时,它不会被调用.
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" : "[email protected]","uid" : "097ca4a4-563f-4867ghj0-6209288bd7f02","username" : "test1","waiting" : "0" },"55a8f979-ad0d-438u989u69-aa4a-45adb16175e7" : { "email" : "[email protected]","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) } }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。