2014-12-07 48 views
-2

所以我要创建一个应用程序,通过阅读你在应用程序中输入的成分生成食谱。 例如,(我正在考虑使用数组来做到这一点),让我们说,用户推动这些成分的按钮:[鸡蛋,面粉,糖,小苏打]需要帮助创建某个任务的功能

,并有3个食谱可用的应用程序:

A - 需要鸡蛋,面粉,糖。 B - 需要鸡蛋,面粉。 C - 需要小苏打,番茄酱。

我想创建的功能会选择配方A和B,因为用户具有所需的配料,而不像配方C那样他缺少酱料。

我认为这样做的方式是通过比较成分列表和配方列表,并且如果两者具有相同的项目或配方具有较少的成分,则比应用程序显示食谱。
我可以用什么函数去做这件事?

+1

我没有看到一个问号在这个岗位。问题是什么? – 2014-12-07 09:47:11

+0

试图找到一个函数来比较2个列表 – artie711 2014-12-07 09:53:50

回答

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 ingredients = NSSet(objects:“”),然后,当我点击例如egss按钮时,它会将鸡蛋添加到列表中。我试过:ingredients.addObject(“鸡蛋”),但没有工作 – artie711 2014-12-07 14:22:03

+0

非常感谢!尽管如此,仍然必须习惯于设置! – artie711 2014-12-07 14:43:00