2014-12-07 37 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