Реализация поиска в TableView - используя метод array.filter и searchBar - Swift 5
UserTrackNumbers - массив с данными
UserTrackNumbersDefault - такой же массив с данными
func searchBar(_ searchBar: UISearchBar,
textDidChange searchText: String) {
// Если нужно
let myCell = tableView.
dequeueReusableCell(
withIdentifier: "Cell")
as! TableViewCell1
myCell.dirNotCategory.text = "Текст"
// Если нужно
// Проверяем, если текст пустой
if searchText.isEmpty {
UserTrackNumbers = UserTrackNumbersDefault
self.tableView.
reloadData()
}
else {
filterTableView(
text: searchText)
self.tableView.
reloadData()
}
// Если массив пуст - мы ничего не нашли....
if UserTrackNumbers.count == 0 {
// Если нужно
myCell.dirNotCategory.text = "Не найдено"
// Если нужно
print("Не найдено!")
}
else {
print("Нашли!")
// Если нужно
myCell.dirNotCategory.text = "Pavlin -весь город, как на ладони!
// Если нужно
}
}
// Метод для поиска - или же фильтрация массива
func filterTableView(
text:String) {
UserTrackNumbers = UserTrackNumbersDefault.
filter({ (
mod) ->
Bool in
let searchString =
mod.track_number! +
mod.track_comment!
return searchString.lowercased().contains(text.lowercased())
})
self.tableView.
reloadData()
}
Возврат к списку