Я пытаюсь написать код Swift, но я довольно новичок в Swift, и я действительно не знаю, иду ли я в правильном направлении с этими перечислениями.Любая помощь могла бы быть полезна.
Моя идея состоит в том, чтобы дать пользователю рецепты, которые соответствуют различным ингредиентам, которые пользователь указывает, что он или она имеет в наличии.Я собрал множество рецептов.Каждый объект рецепта имеет несколько характеристик: название, тип еды, необходимое мясо и овощи, необходимые для этого рецепта.
Я также хочу отсортировать новый, более короткий массив по другой переменной - мукетип (сначала завтрак), и я надеюсь также показать только один вариант для каждого типа еды: одна идея на завтрак, одна идея на обед, одна идея на ужин.
Все это добавляет: 1) пользовательские входные ингредиенты, которые он / она имеет в наличии 2) внутренне, весь массив рецептов в базе данных сводится к тому, что доступно 3) использование получает только одну опциюдля каждого приема пищи, завтрак указан первым.
Я думаю, что-то подобное уже существует, но я не видел логики для этого
Должен ли я попытаться поместить эти перечисления в класс RecipeGenerator или что-то в этом роде?как это?И стоит ли писать логику с помощью функции func для переключения перечисления?Или я должен использовать array.filter?array.filter с ключом, значением, потому что у меня есть коллекция?есть идеи ?
enum RecipeCode: String {
case chickenWithBroccoli = "chicken with broccoli"
case chickenWithAsparagus = "chicken with asparagus"
case turkeyWithBroccoli = "turkey with broccoli"
case turkeyWithAsparagus = "turkey with asparagus"
case chicken = "chicken"
case turkey = "turkey"
case broccoli = "broccoli"
case asparagus = "asparagus"
}
enum Meat: String {
case chicken = "chicken"
case turkey = "turkey"
}
enum Vegetable: String {
case broccoli = "broccoli"
case asparagus = "asparagus"
}
enum Meal {
case dinner
case lunch
case breakfast
}
struct Recipes {
let code: RecipeCode
let meal: Meal
let meat: Meat
let vegetable: Vegetable
}
let recipes = [Recipe(code: .chickenWithBroccoli, meal: .dinner, meat: .chicken, vegetable: .broccoli),
Recipe(code: .chickenWithAsparagus, meal: .lunch, meat: .chicken, vegetable: .asparagus),
Recipe(code: .turkeyWithBroccoli, meal: .breakfast, meat: .turkey, vegetable: .broccoli),
Recipe(code: .turkeyWithAsparagus, meal: .dinner, meat: .turkey, vegetable: .asparagus),
Recipe(code: .chicken, meal: .lunch, meat: .chicken, vegetable: .none),
Recipe(code: .turkey, meal: .breakfast, meat: .turkey, vegetable: .none),
Recipe(code: .broccoli, meal: .dinner, meat: .none, vegetable: .broccoli),
Recipe(code: .asparagus, meal: .lunch, meat: .none, vegetable: .asparagus)]
protocol AvailableIngredients {
var chickenAnswer: Bool { get }
var turkeyAnswer: Bool { get }
var broccoliAnswer: Bool { get }
var asparagusAnswer: Bool { get }
}