使用swift xcode返回自动提示搜索

时间:2018-04-19 20:20:12

标签: swift xml xcode search filter

我有一个搜索栏,可以过滤食谱标题的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时返回某些字符。提前感谢您的帮助

2 个答案:

答案 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})