【问题标题】:Filter a tableview with UISearchResultsUpdating使用 UISearchResultsUpdating 过滤表视图
【发布时间】:2016-10-27 19:18:43
【问题描述】:

我有一个非常大的数据数组,我使用搜索栏进行过滤。但是,我只想过滤用户在搜索栏中输入的内容。 IE。如果你输入“b”,你只会得到以 b 开头的项目。该列表超过 200,000 项,所以现在即使输入了许多字母,显示的结果通常也无关紧要。我尝试了很多搜索,但我找到的每一个指南都是我所拥有的:

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()
    }
}

我了解使用“包含”会产生上述效果。但我不知道如何以所需的方式过滤它。例如,我希望这样,如果我输入“Ben”,它会显示“Bendi”、“Benhu”、“Benji”等结果。而不是显示“Juben”、“Ibeno”等结果,你会得到图片。

感谢您的帮助!

【问题讨论】:

    标签: swift uitableview uisearchbar


    【解决方案1】:

    您可以在过滤器中使用“hasPrefix”而不是“包含”:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-19
      • 1970-01-01
      • 2018-04-30
      • 2014-10-05
      • 2017-06-26
      • 2015-07-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多