Итак, у меня есть объект Vegetable, который среди других свойств имеет массив foodArray, который выглядит примерно так: ["Stew, "Salad"]
, представляющий, в каком рецепте может быть включен пищевой продукт, и ["Eaten"]
, если овощ больше не содержится в кладовой. Так, например:Filtered Search with Scope Bar (Split View) в массиве
let carrot = Vegetable(name: "carrot", foodArray: ["Stew"])
let tomato = Vegetable(name: "tomato", foodArray: ["Salad"])
let onion = Vegetable(name: "onion", foodArray: ["Stew", "Salad"])
let corn = Vegetable(name: "corn", foodArray: ["Eaten"])
и все эти объекты растительного будут храниться в массиве Овощной называется vegetables
.
Вопрос в том, могу ли я использовать значения этого массива для настройки отфильтрованного поиска.
Я уже реализовал SplitView и настроил панель поиска и имел табличный вид со списком овощных объектов. Я хочу, чтобы панель области отображала различные строки (имена рецептов), найденные в массиве. Например, «Stew», «Salad», «Eaten», чтобы быть кнопками масштаба, и когда пользователь выполняет поиск по кнопке области, все растительные объекты, которые имеют эту кнопку в foodArray, всплывают.
В настоящее время мой код работает отлично, за исключением реализации моего объема. Это код, который я до сих пор:
func filterContentForSearchText(_ searchText: String, scope: String = "All") {
filteredVegetables = vegetable.filter({(vegetable : Vegetable) -> Bool in
let categoryMatch = (scope == "All") || (vegetable.foodArray == scope)
return categoryMatch && vegetable.name.lowercased().contains(searchText.lowercased())
})
tableView.reloadData()
}
Может кто-нибудь сказать мне, как изменить эту filterContentForSearchText
функции поиск через массив и иметь кнопки Scope быть различными возможными значениями в массиве (при условии, что они являются только три перечисленные выше, т.е. «Ешьте», «Салат», «Тушеное мясо»)? Я хочу сохранить мою раскладку раскадровки. Любая помощь приветствуется.
Спасибо! Можно ли объединить два значения в одну область? Например, если мне нужны две кнопки сферы: «Ешьте» и «Рецепт», где «Рецепт» содержит «Тушеное мясо» и «Салат»? – ch1maera
Да, вот и все. – ch1maera
@ ch1maera Для этого фильтра «Eaten» это то же самое, что и мое текущее решение для 'Recipe', вы можете фильтровать ваш массив таким образом. 'filtersVegetables = vegetable.filter {$ 0.foodArray.contains (" Stew ") || $ 0.foodArray.contains («Салат»)} ' –