Я пытаюсь получить некоторые значения вместо других.На самом деле я хочу искать пользователей по их именам.
Я пытался использовать queryStarting(atValue: input)
и queryEnding(atValue: "u{f8ff}")
, но не смог найти правильного решения.
let input = searchInput.text?.lowercased()
print("Search for \(input!)")
let ref = Database.database().reference().child("Usernames").queryStarting(atValue: input).queryEnding(atValue: "u{f8ff}").queryOrderedByKey()
ref.observeSingleEvent(of: .value) { (snapshot) in
if snapshot.exists() {
for users in snapshot.children.allObjects as! [DataSnapshot] {
let user = users.value as? [String:AnyObject]
let id = user?["id"] as! String
Users.init(userId: (id))
print(users.key)
}
}
}
Как видите, я также добавил queryOrderedByKey()
.Если я не добавлю эту часть, она ничего не получит.Я хочу только получить значения, начиная с того, что я пишу в текстовом поле.
Usernames
----- charles
----------id: charles's uid
----- pierre
----------id: pierre's uid
----- bob
----------id: bob's uid
----- lu
----------id: lu's uid
Проблема заключается в том, что, например, если ввод «L» (для поиска lu), он получает [lu].Затем, если ввод «Bo» (для поиска bob), он извлекает [lu] и [bob], а не только [bob], как я хочу.И, очевидно, если ввод «C» (для поиска bob), он получает [lu], [bob], [pierre] и, наконец, [charles].