我正在尝试在用户输入时查询firebase数据库,但我一直收到此错误
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我正在尝试在用户输入时查询firebase数据库,但我一直收到此错误相关的知识,希望对你有一定的参考价值。
所以我发现这个代码在用户还在输入时查询你的数据库,但是代码已经过时而且我一直在更新它,但是有一个错误,我不知道如何修复。
func findFriends(text: String) -> Void {
let ref = Database.database().reference()
ref.child("users").queryOrdered(byChild: "username").queryStarting(atValue: text).queryEnding(atValue: text+"u{f8ff}").observe(.value, with: { snapshot in
let user = User()
let userArray = [User]()
for u in snapshot.children{
user.name = u.value!["name"] as? String
}
})
我在最后一行收到错误,它说:
“Any”类型的值没有成员“value”
答案
snapshot.children
中的元素是Any
类型,没有value
属性。要获得value
属性,您需要将u
投射到DataSnapshot
:
for userSnapshot in snapshot.children{
let userSnapshot = userSnapshot as! DataSnapshot
guard let dictionary = userSnapshot.value as? [String: Any] else { return }
user.name = dictionary["name"] as? String
}
或者,你将演员放在循环中:
for userSnapshot in in snapshot.children.allObjects as? [DataSnapshot] ?? [] {
guard let dictionary = userSnapshot.value as? [String: Any] else { return }
user.name = dictionary["name"] as? String
}
以上是关于我正在尝试在用户输入时查询firebase数据库,但我一直收到此错误的主要内容,如果未能解决你的问题,请参考以下文章
在 Swift 3 中包含字典的 Firebase 进程子快照