在Objective-C中,我想將plist與我正在使用的API的結果進行比較。我正在使用返回食譜配料的API。我將這些結果放入表格視圖中,向用戶顯示配方名稱和配方成分。當用戶選擇他們選擇的任何配方時,我想要顯示一個UIAlert,告訴用戶天氣,他們擁有該特定配方的所有成分。來自API的成分將與Plist進行比較。希望這很清楚,如果不是隻是問,我會試着更清楚地解釋它。比較目標-C中的兩個參數
-1
A
回答
1
如果我理解的很好,用戶在冰箱裏的配料是從plist文件中提取的。
閱讀plist並將其存儲在NSDictionary中非常簡單。然後你可以比較你的程序返回的成分。
如果plist是由程序生成的,那麼您可以比較程序中對您有意義的任何內容:例如,對象「成分」的索引。 如果不是,那麼您的比較可能會比較弱,這取決於您選擇比較的內容。
對於您食譜中的每種配料,您可以檢查屬於該用戶的同一配料的編號。
1
您想知道是否所有必需的成分都在櫥櫃中。你只需要一個YES或NO的結果。因此,您需要從數據中提取兩個NSArrays - 必需的成分和foodCupboard。
- (BOOL) weHaveIngredients:(NSArray*)requiredIngredients inCupboard:(NSArray*)foodCupboard
{
BOOL result = YES;
For (id ingredient in requiredIngredients) {
if !(foodCupboard containsObject:ingredient) {
result = NO;
break;
}
}
return result;
}
用NSSets(唯一對象的集合)更好地完成此操作。您可以從一個NSArray創建的NSSet容易:
NSSet* set = [NSSet setWithArray:(NSArray*)array];
然後,你可以這樣做:
- (BOOL) weHaveIngredients:(NSSet*)requiredIngredients inCupboard:(NSSet*)foodCupboard
{
BOOL result = YES;
if (!requiredIngredients isSubsetOfSet:foodCupboard)
result = NO;
return result;
}
你可以使用它像
NSString* alertmessage = "Sorry we can't make a cake, not enough ingredients"
if ([self weHaveIngredients:recipeIngredients inCupboard:foodCupboard])
alertmessage = "Start baking"
UIAlertView *alert =
[[UIAlertView alloc] initWithTitle: @"Ingredients checked"
message: alertMessage
delegate: self
cancelButtonTitle: @"OK"
otherButtonTitles: nil];
[alert show];
您的其他問題是讓你的數據到兩個數組的形式。當您將它放入一個tableView中時,您必須已經從您的API中獲取數組。我同樣假設你知道如何從你的(存儲?)plist中獲得數組,因爲你必須以某種方式製作plist。如果你有特定的數據轉換問題,我建議你問一個更具體的問題。
這都沒有解決你是否有足夠的每個成分 - 正確地做到這一點,你會想要某種數據庫。
相關問題
- 1. 目標C,比較兩個日期
- 2. 比較兩個參數
- 3. 比較兩個數組C++
- 4. 比較兩個數據表中的c#
- 5. C# - 比較兩個數組中的值
- 6. 在Jquery中比較兩個參數
- 7. 字符串比較與目標C中的類比較-C
- 8. 在C#中比較兩個數據源
- 9. 比較兩個JSON文件的目標c
- 10. 無法比較目標c中的responseString
- 11. 比較目標中的字符串C
- 12. 目標c中的unichar比較
- 13. 比較兩個參數ASM x64
- 14. 比較兩個日期參數
- 15. 比較兩個數組中的比特
- 16. 比較兩個小時字符串目標C
- 17. 比較兩個類c#
- 18. 比較兩個ip與C#
- 19. 比較兩個列表C#
- 20. 比較C兩個陣列++
- 21. 比較兩個列表C#
- 22. C++:比較兩個向量
- 23. 比較兩個向量C++
- 24. 比較兩個stringbuilders usng C#
- 25. 比較兩個變量C
- 26. C#比較兩個集合
- 27. 比較c中的兩個文件
- 28. 比較C++中的兩個字符串
- 29. 比較C中的兩個XMLNode(libxml庫)
- 30. 比較C#中的兩個字符串
在Xcode中會遇到麻煩。雖然可能在Objective-C中。 – 2013-03-19 00:49:05
順便說一句,你有問題嗎? – 2013-03-19 00:49:27