我有一个非常大的数据数组,我使用搜索栏进行过滤。但是我想只过滤用户在搜索栏中输入的内容。即如果你打字" 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"等等,你得到了图片。
感谢您的帮助!
答案 0 :(得分:0)
您可以使用' hasPrefix'而不是'包含'对于您的过滤器:
return fix.lowercased().hasPrefix(searchText.lowercased())