как использовать UISearchBar для поиска текста и изображений - PullRequest
0 голосов
/ 10 мая 2018
imageData = [UIImage (named: "Burger Point")!,
                 UIImage (named: "Eating Point")!,
                 UIImage (named: "Food Garage")!,
                 UIImage (named: "Food Masters")!,
                 UIImage (named: "Food Plaza")!,
                 UIImage (named: "Masala Junction 71")!,
                 UIImage (named: "Samosa Express")!,
                 UIImage (named: "Transform Diet")!,
                 UIImage (named: "Urban Pind")!]

Это мой массив изображений, и массив имен совпадает с массивом изображений. Теперь я хочу сохранить отфильтрованные изображения в массиве filterImages, но я не понял, как это сделать я сделал что-то в делегате searchBar, но он выдает ошибку

// SearchBar Text and Image filtering
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
    if searchBar.text == nil || searchBar.text == "" {
        isSearching = false
        view.endEditing(true)
        searchTableView.reloadData()
    }
    else {
        isSearching = true

          filteredData =  receivedData.filter({ (text) -> Bool in
            let tmp: NSString = text as NSString
            let range = tmp.range(of: searchText, options: NSString.CompareOptions.caseInsensitive)
                return range.location != NSNotFound
          })
        filteredImage = imageData.filter({ (text) -> Bool in
            let tmp : UIImage = text as NSString
            let range = tmp.range(of: searchText, options: NSString.CompareOptions.caseInsensitive)
            return range.location != NSNotFound
        })
        searchTableView.reloadData()
    }
}

1 Ответ

0 голосов
/ 10 мая 2018

Из вашего вопроса я понимаю, что у вас есть строковые данные, аналогичные изображениям в ваших активах, и они нужны, когда пользовательский поиск запускает по карте результаты поиска по изображению

вот решение

let receivedData = ["Burger Point","Eating Point","Food Garage","Food Masters","Food Plaza"]
    let searchText = "Bur"
    let filteredImage = receivedData.filter {$0.lowercased().contains(searchText.lowercased())}.map { UIImage.init(named: $0)}
    print(filteredImage.count)

Применить к вашему поиску Функция

   // SearchBar Text and Image filtering
        func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {

            if !searchBar.text.isEmpty{
                let filteredImage = receivedData.filter {$0.lowercased().contains(searchText.lowercased())}.map { UIImage.init(named: $0)}
     isSearching = !filteredImage.isEmpty
    searchTableView.reloadData()
            }
        }
...