在swift UISearchBar中筛选任意顺序的多个单词的数组

在swift UISearchBar中筛选任意顺序的多个单词的数组,swift,Swift,我有一个UISearchBar和一个tableView,其中显示了我正在搜索的食物项目数组,其中有一个名为desc的变量。我的搜索功能可以在下面看到。目前,这种方法可以很好地不敏感地搜索大小写以获得精确的字符串匹配和词序 例如,我正在搜索的项目有很长的多个字符串,例如“Milk,whole,3.25%milkfat”。如果您搜索“milk”,则此项将成为结果。然而,如果你搜索“全脂牛奶”,这个项目将不会是一个结果。我想知道如何将filterContentForSearchText方法更改为用于多

我有一个UISearchBar和一个tableView,其中显示了我正在搜索的食物项目数组,其中有一个名为desc的变量。我的搜索功能可以在下面看到。目前,这种方法可以很好地不敏感地搜索大小写以获得精确的字符串匹配和词序

例如,我正在搜索的项目有很长的多个字符串,例如“Milk,whole,3.25%milkfat”。如果您搜索“milk”,则此项将成为结果。然而,如果你搜索“全脂牛奶”,这个项目将不会是一个结果。我想知道如何将filterContentForSearchText方法更改为用于多词搜索。在这个例子中,我希望搜索“全脂牛奶”以包括所有同时包含“全脂”和“牛奶”两个词的结果——以任何顺序

func updateSearchResultsForSearchController(searchController: UISearchController) {
    if self.searchController?.searchBar.text.lengthOfBytesUsingEncoding(NSUTF32StringEncoding) > 0 {

        let searchBarText = self.searchController!.searchBar.text

        self.filterContentForSearchText(searchBarText)

        // Reload a table with results.
        self.searchResultsController?.tableView.reloadData()
    }
}

func filterContentForSearchText(searchBarText : String) {
    self.filteredFoods = allFoods.filter({(food : Food) -> Bool in
        let stringMatch = food.desc.rangeOfString(searchBarText, options: NSStringCompareOptions.CaseInsensitiveSearch)

        return (stringMatch != nil)
    })
}

你在对内容进行假设。如果要将每个单词作为搜索参数,然后查找匹配项,则可以按空格分割。或者,您可以实现一些更高级的搜索算法,比如您正在对内容进行假设。如果要将每个单词作为搜索参数,然后查找匹配项,则可以按空格分割。或者,您可以实现一些更高级的搜索算法,如