我正在尝试在用户输入时查询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数据库,但我一直收到此错误的主要内容,如果未能解决你的问题,请参考以下文章

firebase swift -- 用户查询

在 Swift 3 中包含字典的 Firebase 进程子快照

查询Firebase用户以检查数据库中是否存在联系人

如何通过异步调用 uid 从 Firebase 查询数据

Firebase 查询(在 Swift 中)在应用的所有用户中查找特定值

Swift 和 Firebase 查询数据库