2011-06-19 61 views
1

是否有一種方便的方式從NSDictionary獲取鍵/值對?從NSDictionary中提取鍵/值對

說我有一個的NSDictionary,partyGuest,

{ 
    name = "jim"; 
    age = 28; 
    occupation = "astronaut"; 
    favouriteMeal = 
     { 
     starter = "fish head soup"; 
     mainCourse = "roast armadillo"; 
     dessert = "sugar plum fairy cakes"; 
     } 
} 

我想獲得內獲得一個鍵/值對,就像這樣,

NSDictionary *guestFoodChoice = [partyGuest itemForKey:@"favouriteMeal"]; 

...並有獲得密鑰和價值,

guestFoodChoice = 
{ 
    favouriteMeal = 
     { 
     starter = "fish head soup"; 
     mainCourse = "roast armadillo"; 
     dessert = "sugar plum fairy cakes"; 
     } 
} 

似乎應該有,但因爲我看不到一個明顯的方法,也許我失蹤什麼?

回答

5

這聽起來像你基本上要得到一個字典,在另一個字典鍵值對的某個子集(也許只有一個)。如果這是正確的,鍵值編碼方法dictionaryWithValuesForKeys:是你想要的。

NSDictionary *guestFoodChoice = [partyGuest dictionaryWithValuesForKeys:[NSArray arrayWithObject:@"favouriteMeal"]]; 
+0

的方法,謝謝查克,並感謝每個人的貢獻。 – Snips

1
NSDictionary *guestFoodChoice = [NSDictionary dictionaryWithObjectsAndKeys:[partyGuest itemForKey:@"favouriteMeal"],@"favouriteMeal",nil]; 
+1

謝謝,是的,(使用valueForKey)是我目前的解決方法,但我認爲應該有一個更優雅的快捷方式。 – Snips

+0

在NSDictionary上創建一個添加解決方案代碼的類別,然後至少可以清理主項目中的代碼(使其更具可讀性)。我會調用類似'-keyedDictionaryWithObjectForKey:' –