Я разбиваю на страницы данные из коллекции Firestore, и эта часть работает просто отлично. Однако, когда я ввожу поисковый термин, альтернативный запрос (где я использую arrayContains для поиска ключевых слов) больше не запускается. Я вижу, что многие решения используют параллельный массив, но он не будет работать для разбивки на страницы, если я не ошибаюсь.
Вот мои функции делегата панели поиска:
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
searched = true // search is being used
restaurantArray.removeAll()
searchQuery = searchText
queryGenerator(searched: searched, queryString: searchQuery!)
}
func searchBarCancelButtonClicked(_ searchBar: UISearchBar) {
searched = false // search is not being used
queryGenerator(searched: searched, queryString: searchQuery!)
}
А вот где я распространяю запросы в зависимости от того, используется поиск или нет:
func queryGenerator(searched: Bool, queryString: String) {
var query: Query!
if searched {
if restaurantArray.isEmpty {
query = db.collection("Restaurant_Data").whereField("keywords", arrayContains: queryString).limit(to: 4)
} else {
query = db.collection("Restaurant_Data").whereField("keywords", arrayContains: queryString).start(afterDocument: lastDocument!).limit(to: 4)
}
} else {
if restaurantArray.isEmpty {
query = db.collection("Restaurant_Data").limit(to: 4)
} else {
query = db.collection("Restaurant_Data").start(afterDocument: lastDocument!).limit(to: 4)
}
}
batchFetch(query: query) // Query firestore and get results
}