2014-12-07 2 views
-2

, поэтому я создам приложение, которое генерирует рецепты, читая ингредиенты, введенные в приложении. Например, (я думаю об использовании массивов для этого), скажем, пользователь нажал кнопки для этих ингредиентов: [яйца, мука, сахар, пищевая сода]Нужна помощь в создании функции для определенной задачи

и есть 3 рецепта, доступные в приложении :

A - требуется яйца, мука, сахар. B - требуется яйца, мука. C - требуется пищевая сода, томатный соус.

Функция, которую я хотел бы создать, будет выбирать рецепты A и B, потому что у пользователя есть необходимые ингредиенты, в отличие от рецепта C, где ему не хватает соуса.

Я думаю, что способ сделать это - сравнить список ингредиентов и списки рецептов, и если у обоих есть одинаковые предметы или рецепт имеет меньше ингредиентов, чем приложение отображает рецепты.
Какую функцию я могу использовать для этого?

+1

Я не вижу ни одного знака вопроса в этом сообщении. Что за вопрос? –

+0

пытается найти функцию для сравнения 2 списков – artie711

ответ

2

NSSet будет работать хорошо для вас. Он имеет метод isSubsetOfSet, который проверяет, является ли один набор подмножеством другого.

let recipes:[String:NSSet] = ["A": NSSet(objects: "eggs", "flour", "sugar"), "B": NSSet(objects: "eggs", "flour"), "C": NSSet(objects: "baking soda", "tomato sauce")] 

let ingredients = NSSet(objects: "eggs", "flour", "sugar", "baking soda") 

for (name, recipe) in recipes { 
    if recipe.isSubsetOfSet(ingredients) { 
     println("you have the ingredients for recipe \(name)") 
    } 
} 

Если вы хотите создать свой ingredients набор бит за битом, а затем использовать NSMutableSet:

var ingredients = NSMutableSet() 
ingredients.addObject("flour") 
ingredients.addObject("butter") 
+0

Спасибо! Но как добавить объект в набор? Например, я хочу, чтобы он начинался с пустого: var components = NSSet (objects: ""), затем, когда я нажимаю, например, кнопку egss, он добавляет яйца в список. Я попробовал: components.addObject («яйца»), но это не помогло. – artie711

+0

Большое спасибо! Все равно придется привыкнуть! – artie711

Смежные вопросы