【问题标题】:Filter Array with UISearchBar使用 UISearchBar 过滤数组
【发布时间】:2023-04-07 17:42:01
【问题描述】:

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

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

var filteredData: [String] = []

filteredData = data.filter({$0 == searchBar.text})

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

【问题讨论】:

标签: arrays swift uisearchbar


【解决方案1】:

Swift 5 解决方案:

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

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

    tableView.reloadData()
}

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

【讨论】:

    【解决方案2】:

    试试这个:

    filteredData  = data.filter { $0.contains(_ other: searchBar.text) }
    

    【讨论】:

      【解决方案3】:

      这肯定会帮助你:

      var 过滤数据:[字符串] = []

       func searchBar(_ searchBar: UISearchBar, textDidChange searchText:String){
          filterContentForSearchText(searchText: searchText)
      }
      
      func filterContentForSearchText(searchText: String, scope: String = "All") {
          if searchText != "" {
      
              filterData = data.filter {name in
      
                                      return   name.lowercased().contains(searchText.lowercased())
      
              }
          }else { self.filterData = self.data}
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-05-27
        • 2014-05-26
        • 2016-06-05
        • 2020-08-04
        • 1970-01-01
        • 1970-01-01
        • 2018-12-19
        相关资源
        最近更新 更多