Что-то я потерялся слегка, увидев такую конструкцию, это норм практика?) Свитч то получше, наверное
enum SearchSection {
case previousSearches(searches: [String])
case categories(names: [String])
case brands(names: [String])
case products(products: [ProductViewModel])
…
}
// где-то в другом месте
func didSelectItem(at indexPath: IndexPath) {
let section = sections[indexPath.section]
if case SearchSection.products(products: let products) = section {
let product = products[indexPath.row]
// show product
} else {
// do something else
}
}