Reputation: 137
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")!]
This is my image array and the name array is same as image array. Now i want to store the filtered images to filterImages array but i didn't getting how to get it done i've done something in searchBar delegate but it is giving me error
// 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()
}
}
Upvotes: 1
Views: 470
Reputation: 6067
From your question i understand that you have string data is similar to image in your assets and need when user search start map search result to Image
here is solution
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)
Apply to your search Function
// 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()
}
}
Upvotes: 2