所以我要创建一个应用程序,通过阅读您在应用程序中输入的成分来生成食谱。 例如,(我想使用数组来做这个)让我们说用户按下这些成分的按钮:[鸡蛋,面粉,糖,小苏打]
并且应用程序中有3个食谱:
< - > A - 需要鸡蛋,面粉,糖。 B - 需要鸡蛋,面粉。 C - 需要小苏打,番茄酱。我想要创建的功能将选择食谱A和B,因为用户具有所需的成分,不像食谱C,他缺少酱汁。
我认为这样做的方法是比较配料清单和食谱清单,如果两者都有相同的食品或配方含有较少的配料,那么应用程序会显示配方。
我可以用什么功能来做这件事?
答案 0 :(得分: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")