Conditional display in InstantSearch iOS
This guide describes what to do when there are no results, when there’s no query, or when there are errors.
If you want to feature content in your search results based on a set of conditions, you can use Rules to:
- Feature specific data from within your records to, for example, show promotional prices during a sales period
- Display advertisements or promotional banners.
Handling no results
Since not all queries lead to results, it’s essential to let users know when this happens by providing hints on how to adjust the query.
Display a message
The easiest way to display a fallback message when a query doesn’t return results is to subscribe to the Searcher
’s onResponse
event and show your “no results” UI whenever the response has no hits
.
1
2
3
4
5
6
7
searcher.onResults.subscribe(with: self) { (_, results) in
if results.hits.isEmpty {
showNoResultsUI()
} else {
hideNoResultsUI()
}
}
Handling empty queries
By default, InstantSearch iOS always shows you results, even when the query is empty. Depending on your use case and how you build your UI, you may only want to show results when there’s a query.
The Hits
widget exposes a showItemsOnEmptyQuery
property in the HitsInteractor
’s initializer, which defaults to true
. When set to false
, the widget doesn’t present hits if the query is empty.
1
let hitsInteractor = HitsInteractor<JSON>(showItemsOnEmptyQuery: false)
Handling errors
If an error occurs, you can display a specific piece of content to help the user return to the standard state.
To be notified of errors, subscribe to the Searcher
’s onError
event.
1
2
3
4
searcher.onError.subscribe(with: self) { (_, args) in
let (_, error) = args
debugPrint("Error occured\(error)")
}