2016-09-04 12 views
1

私は、ユーザーがFirebase上でユーザーを検索し、正確に一致するものを検索するのではなく、入力時にテーブルビューを更新できる検索バーを探しています。Firebaseでの検索結果の絞り込みですか?

func searchBar(searchBar: UISearchBar, textDidChange searchText: String) { 
    if searchBar.text == nil || searchBar.text == "" { 
     inSearchMode = false 
     tableView.reloadData() 
    } else { 
     inSearchMode = true 
     let lower = searchBar.text!.lowercaseString 

     filteredPeopleArray = peopleArray.filter({$0.title.hasPrefix(lower) != nil}) 
     tableView.reloadData() 
} 

このコードは、そのために動作しますが、私は現在firebase上のすべての単一のユーザーを持つ配列を埋めるためにとアプリ間、彼らが作成されているとして、常に新しいユーザーを追加することのために何、これが必要になることは負荷にあります開いている。

私は、 "キーが文字列を含んでいるユーザを見つけて"あなたのtextDidChangeでパースするためのクエリを実行していましたが、Firebaseのようなものは見ていません。また、文字が入力されるたびにfirebaseにクエリを送信するためにデータに課税することはありませんか?

いくつかの文字を入力し、名前の前にそのプレフィックスを持つサーバーからユーザーの一覧を返す場合など、Instagramのようなどのような方法が使用されていますか?だから "Bo"のようにボブとボビーのリストを返すかもしれない。

答えて

4

私はコメントできませんが、ここで私を助けた記事があります。

https://www.quora.com/How-would-you-search-a-Firebase-Realtime-Database-with-a-substring

みましょうあなたはfirebaseデータの下

{ 
    "lambeosaurus": { 
    "dimensions": { 
     "height" : 2.1, 
     "length" : 12.5, 
     "weight": 5000 
    } 
    }, 
    "stegosaurus": { 
    "dimensions": { 
     "height" : 4, 
     "length" : 9, 
     "weight" : 2500 
    } 
    } 
} 

は例の下に名前が文字 "B" で始まるすべての恐竜を発見持っていると言います。

var ref = new Firebase("https://example.firebaseio.com/"); 
ref.orderByKey().startAt("b").endAt("b\uf8ff").on("child_added", function(snapshot) { 
    console.log(snapshot.key()); 
}); 
+0

私はテキストフィールドの "textDidChange"またはそれが何であってもそのクエリを実行しますか? 私の心配は、すべてのキーストロークでfirebaseへのリクエストをすることは残酷なものになるだろう。 –

+0

リンクを投稿するたびに、リンクに言及するだけではありません。また、それに含まれるものを含め、回答自体にコードを提供する。 –

+1

私はちょうどコメントとしてリンクを掲示していましたが、私はそうするために当時の担当者を持っていませんでしたが、私に@Adarsh – Callam

関連する問題