使用 UISearchBar 过滤数组

Mar*_*eli 3 arrays uisearchbar swift

我目前正在使用以下代码来过滤数组并将结果显示在我的 tableView 中。问题是,只有当搜索与确切的单词匹配时,才会返回结果。如何更改数组过滤器以在输入时搜索每个字符?

let data = ["Mango", "Grape", "Berry", "Orange", "Apple"]

var filteredData: [String] = []

filteredData = data.filter({$0 == searchBar.text})
Run Code Online (Sandbox Code Playgroud)

让“Mango”显示在我的 tableView 中的唯一方法是,我必须在搜索栏中输入 Mango,输入“Man”不会显示任何结果。

Mic*_*ael 7

斯威夫特 5 解决方案:

func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
    filteredData = data

    if searchText.isEmpty == false {
        filteredData = data.filter({ $0.contains(searchText) })
    }

    tableView.reloadData()
}
Run Code Online (Sandbox Code Playgroud)

这确保了当 searchBar 为空时,它会返回显示所有数组的数据,同时在每次更改文本时重新加载 tableView。