我有一个搜索栏,可以过滤食谱标题的xml数组。问题是我必须搜索整个标题,否则我不会看到建议的结果。例如,如果我有"全谷物华夫饼"和"全麦面包"打字"整体"没有回报。打字"全谷物华夫饼"成功返回。这是searchBar
函数
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
if searchBar.text == nil || searchBar.text == "" {
isSearching = false
view.endEditing(true)
myTableView.reloadData()
} else {
isSearching = true
filteredData = tableViewDataSource.filter({$0.title == searchBar.text})
myTableView.reloadData()
}
}
我非常确定解决方案与区分大小写有关,并在设置filteredData
时返回某些字符。提前感谢您的帮助
答案 0 :(得分:1)
如果要搜索以搜索文本开头的字符串,可以使用contains
过滤包含文本的数组中的任何项目,也可以使用hasPrefix
。
像这样,
filteredData = tableViewDataSource.filter { $0.title.contains(searchBar.text) ?? "" }
或者,
filteredData = tableViewDataSource.filter { $0.title.hasPrefix(searchBar.text) ?? "" }
答案 1 :(得分:0)
使用range
在我的情况下工作
filteredData = tableViewDataSource.filter({$0.title.range(of: searchBar.text!) != nil})