2016-10-27 5 views
0

フィルタに検索バーを使用するデータの配列が非常に大きくなっています。しかし、ユーザーが検索バーに入力したものだけをフィルタリングしたいと思います。私。 「b」と入力すると、bで始まる項目だけが取得されます。リストには200,000以上のアイテムが含まれているので、多くの文字が入力されても結果は無関係であることが多い。私は多くのことを探して試してみましたが、私が見つけたすべてのガイドは、私が持っているもののバリエーションです:UISearchResultsUpdatingでテーブルビューをフィルタリングする

extension MapTableController : UISearchResultsUpdating { 
    func filterContentForSearchText(_ searchText: String) { 
      if(searchText == "") { 
       matchingItems = [] 
      } 

      else { 
       matchingItems = arrayOfFixes.filter { fix in 
        return fix.lowercased().contains(searchText.lowercased()) 
       } 
       tableView.reloadData() 
      } 
    } 

    func updateSearchResults(for searchController: UISearchController) { 
     let searchText = searchController.searchBar.text 
     filterContentForSearchText(searchText!) 
     self.tableView.reloadData() 
    } 
} 

私が使用して、上記の効果があります「が含まれて」いることを理解しています。しかし、私はそれを望む方法でフィルタリングする方法を理解できません。たとえば「ベン」と入力すると「ベンディ」「ベンフ」「ベンジ」などの結果が表示されるようにしたいと思います。「ジュベン」、「イベノ」などの結果を表示するわけではありません絵。

ありがとうございました!

答えて

0
あなたが代わりにあなたのフィルタに「含む」の「hasPrefix」を使用することができ

return fix.lowercased().hasPrefix(searchText.lowercased()) 
+0

はちょうど私が感謝、探していたものを! – nixa

関連する問題