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