UISearchbar在swift 3的所有领域中搜索

时间:2017-08-13 15:41:05

标签: swift3 uisearchbar

我有一个显示一些数据的tableview,我用UISearchbar过滤显示的数据。每个数据结构由不同的值和

组成
struct Cake {
    var name = String()
    var size = String()
    var filling = String()
}

当用户开始输入时,我不知道他是否正在过滤名称,大小或填充。我不想使用示波器栏。有没有办法在swift 3中同时过滤各个字段?

这是我用来过滤的代码:

func updateSearchResults(for searchController: UISearchController) {

    if searchController.searchBar.text! == "" {
        filteredCakes = cakes
    } else {
    // Filter the results
        filteredCakes = cakes.filter { $0.name.lowercased().contains(searchController.searchBar.text!.lowercased()) }
    }

    self.tableView.reloadData()
}

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

func updateSearchResults(for searchController: UISearchController)
{
    guard let searchedText = searchController.searchBar.text?.lowercased() else {return}

    filteredCakes = cakes.filter 
    { 
        $0.name.lowercased().contains(searchedText) ||
        $0.size.lowercased().contains(searchedText) ||
        $0.filling.lowercased().contains(searchedText)
    }

    self.tableView.reloadData()
}