具体的なユーザーを検索することを許可するviewControllerをコーディングしています。Swiftを使用してTableViewにユーザーが既に表示されているかどうかを確認
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()
})
}
}
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)
}
})
}
}
問題は、私はあまりにも速く書くとき、私は、同じユーザーが複数回表示させることができ、Firebaseと、ということです私は検索バーとリスナーを持っています。
// if user is not already contained in the array
-> Display it
私は.contains()関数を使用しようとしましたが、私は良い結果に到着していないが、私はまだスウィフトで初心者だ:私はこのような何かを行うことができます機能を持っていると思います。
お願いしますか?
問題に反応するトピックが見つかりました:https://stackoverflow.com/questions/24330056/how-to-throttle-search-based-on-typing-speed-in-ios-uisearchbarそれはうまくいきませんでした。どうもありがとうございました。 – KevinB