我正在尝试在用户键入时查询 firebase 数据库,但我不断收到此错误
Posted
技术标签:
【中文标题】我正在尝试在用户键入时查询 firebase 数据库,但我不断收到此错误【英文标题】:I am trying to query a firebase database in while the user is typing, but I keep getting this error 【发布时间】:2019-04-20 13:25:52 【问题描述】:所以我发现这段代码可以在用户仍在键入时查询您的数据库,但是代码已经过时并且我一直在更新它,但出现了一个我不知道如何修复的错误。
func findFriends(text: String) -> Void
let ref = Database.database().reference()
ref.child("users").queryOrdered(byChild: "username").queryStarting(atValue: text).queryEnding(atValue: text+"\uf8ff").observe(.value, with: snapshot in
let user = User()
let userArray = [User]()
for u in snapshot.children
user.name = u.value!["name"] as? String
)
我在最后一行得到一个错误,它说:
“任何”类型的值没有成员“值”
【问题讨论】:
似乎与this question 中的问题相同,尽管这是一个不同的 swift 版本。 Type 'Any' has no subscript members (firebase)的可能重复 @AndréKool 看起来很相似,但我不确定如何用我的 for 循环来实现它。 【参考方案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
【讨论】:
我在尝试第一个代码时收到此错误。 " 对成员“价值”的模糊引用"以上是关于我正在尝试在用户键入时查询 firebase 数据库,但我不断收到此错误的主要内容,如果未能解决你的问题,请参考以下文章