Я пытаюсь отфильтровать свой массив в моем табличном представлении на «содержит» вместо «префикс» при поиске. Вот мой код:
var searching = false
var cityArray = [["NYC, NY, New Hampshire"], ["Buffalo, NY"]]
func reloadData() {
tableview.reloadData()
}
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
searching = true
searchCity = cityArray.flatMap({ $0 }).filter ({
$0.lowercased().contains(searchBar.text!.lowercased())})
reloadData()
}
Эта функция успешно это делает. Однако, когда я прекращаю редактирование в строке поиска, таблица становится пустой без значений и не возвращает предыдущий массив до начала поиска.
Моя предыдущая версия префикса позволила мне без проблем вернуть предыдущий массив:
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
searching = true
searchCity = cityArray.flatMap({ $0 }).filter { $0.lowercased().prefix(searchText.count) ==
searchText.lowercased()}
reloadData()
}