Поиск в UITableView, который содержит данные Firebase с использованием UISearchController, медленнее / медленнее с большим количеством ячеек в таблице. Я пытался наблюдать за отдельными событиями вместо постоянного наблюдения за базой данных, но это ничего не меняет.
Я следовал указаниям Рэя Вендерлиха здесь: https://www.raywenderlich.com/472-uisearchcontroller-tutorial-getting-started
Загруженный образец кода не запаздывает. Я не могу понять, почему мой так медленно. Например, нажатие на строку поиска занимает 1-2 секунды для загрузки.
Вот мой код:
Контроллер поиска:
extension SubCategoryViewController: UISearchResultsUpdating {
func updateSearchResults(for searchController: UISearchController){
filterContentForSearchText(searchController.searchBar.text!)
}
}
override func viewDidLoad() {
super.viewDidLoad()
searchBarSetup()
....
}
let searchController = UISearchController(searchResultsController: nil)
var filtered = [SubCategoryCellInfo]()
func searchBarIsEmpty() -> Bool {
return searchController.searchBar.text?.isEmpty ?? true
}
func filterContentForSearchText(_ searchText: String) {
filtered = subCategories.filter({( cellInfo : SubCategoryCellInfo) -> Bool in
return cellInfo.itemBrand!.lowercased().contains(searchText.lowercased())
})
subCategoryTable.reloadData()
}
func isFiltering() -> Bool {
return searchController.isActive && !searchBarIsEmpty()
}
func searchBarSetup() {
navigationItem.searchController = searchController
navigationItem.hidesSearchBarWhenScrolling = false
searchController.searchResultsUpdater = self
searchController.obscuresBackgroundDuringPresentation = false
searchController.searchBar.placeholder = "Search"
navigationItem.searchController = searchController
definesPresentationContext = true
}