swift 2.0中过滤方法的第二个参数

时间:2016-04-28 07:18:48

标签: swift uisearchcontroller

我使用以下代码在我的应用中搜索tableviewcontroller。 目前搜索字符串与我的表格列表中的餐馆名称匹配。我希望与我的代码匹配/搜索其他字符串,位置。如何向此功能添加位置

餐馆名称变量 - restaurant.name,
餐厅位置变量 - restaurant.location

func filterContentForSearchText(searchText: String) {
        searchResults = restaurants.filter({ ( restaurant: Restaurant) -> Bool in let nameMatch = restaurant.name.rangeOfString(searchText, options:
        NSStringCompareOptions.CaseInsensitiveSearch)
        return nameMatch != nil
        })
    }

    func updateSearchResultsForSearchController(searchController: UISearchController) {
        let searchText = searchController.searchBar.text
        filterContentForSearchText(searchText!)
        tableView.reloadData()
    }

如何在我的过滤方法中添加此附加参数?

2 个答案:

答案 0 :(得分:4)

试试这个。

func filterContentForSearchText(searchText: String) {
        searchResults = restaurants.filter({ ( restaurant: Restaurant) -> Bool in 

        let nameMatch = restaurant.name.rangeOfString(searchText, options:
        NSStringCompareOptions.CaseInsensitiveSearch)

        let locationMatch = restaurant.location.rangeOfString(searchText, options:
        NSStringCompareOptions.CaseInsensitiveSearch)

        return (nameMatch != nil || locationMatch != nil)
        })
    }

答案 1 :(得分:2)

  

你可以这样做

 func filterContentForSearchText(searchText: String) {

        searchResults = restaurants.filter({( restaurant: Restaurant) -> Bool in

          return restaurant.location.lowercaseString.containsString(searchText.lowercaseString) || restaurant.name.lowercaseString.containsString(searchText.lowercaseString)

        })

        tableView.reloadData()
      }
  

委托方法

  func updateSearchResultsForSearchController(searchController: UISearchController) {

    filterContentForSearchText(searchController.searchBar.text!)
  }

此方法可以帮助您更好地搜索