我正在尝试在用户输入时查询firebase数据库,但我一直收到此错误

问题描述 投票:0回答:1

所以我发现这个代码在用户还在输入时查询你的数据库,但是代码已经过时而且我一直在更新它,但是有一个错误,我不知道如何修复。

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”

swift firebase firebase-realtime-database
1个回答
1
投票

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
}
© www.soinside.com 2019 - 2024. All rights reserved.