angezeigt wird. Ich bin einen ViewController codieren, die spezifische Benutzer suchen können. Ich habe einen SearchBar und einen Hörer:Finden Sie, ob der Benutzer bereits in TableView mit Swift
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
doSearch()
}
func doSearch() {
if let searchText = searchBar.text?.lowercased() {
self.users.removeAll()
self.tableView.reloadData()
Api.User.queryUsers(withText: searchText, completion: { (user) in
self.users.append(user)
self.tableView.reloadData()
})
}
}
Die queryUser func:
func queryUsers(withText text: String, completion: @escaping (Userm) -> Void) {
REF_USERS.queryOrdered(byChild: "username_lowercase").queryStarting(atValue: text).queryEnding(atValue: text+"\u{f8ff}").queryLimited(toLast: 5).observeSingleEvent(of: .value) { (snapshot) in
snapshot.children.forEach({ (s) in
let child = s as! DataSnapshot
if let dict = child.value as? [String: Any] {
let user = Userm.transformUser(dict: dict, key: child.key)
completion(user)
}
})
}
}
Das Problem ist, dass mit Firebase, wenn ich zu schnell schreiben kann ich die gleichen Benutzer mehrmals angezeigt haben. Ich möchte eine Funktion haben, die so etwas tun kann:
// if user is not already contained in the array
-> Display it
Ich versuchte, die .contains zu verwenden() -Funktion, aber ich habe nicht zu einem guten Ergebnis gekommen, ich bin noch ein Anfänger in Swift.
Haben Sie eine Idee, bitte?
Ich fand ein Thema, das auf mein Problem reagieren: https://StackOverflow.com/Questions/24530056/How-to-Throttle-Search-Based-on-Typing-Speed-in-IsoSearchbar Ich versuchte Ihre Antworten aber es hat nicht gut funktioniert. Vielen Dank. – KevinB