【问题标题】:Extracting a key/value pair from an NSDictionary从 NSDictionary 中提取键/值对
【发布时间】:2011-06-19 15:17:23
【问题描述】:

有没有一种方便的方法可以从 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";
      }
}

似乎应该有,但由于我看不到明显的方法,也许我遗漏了什么?

【问题讨论】:

    标签: iphone objective-c ios


    【解决方案1】:

    听起来你基本上想得到一个字典,其中包含另一个字典中的一些键值对子集(可能只是一个)。如果没错,Key-Value Coding 方法dictionaryWithValuesForKeys: 就是你想要的。

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

    【讨论】:

      【解决方案2】:
      【解决方案3】:
      NSDictionary *guestFoodChoice = [NSDictionary dictionaryWithObjectsAndKeys:[partyGuest itemForKey:@"favouriteMeal"],@"favouriteMeal",nil];
      

      【讨论】:

      • 谢谢,是的,(使用 valueForKey)是我目前的解决方法,但我认为应该有一个更优雅的快捷方式。
      • 在 NSDictionary 上创建一个类别,在其中添加解决方法的代码,然后至少可以清理主项目中的代码(使其更具可读性)。我会将该方法称为-keyedDictionaryWithObjectForKey:
      猜你喜欢
      • 2014-03-16
      • 2015-11-24
      • 1970-01-01
      • 1970-01-01
      • 2011-12-08
      • 1970-01-01
      • 1970-01-01
      • 2013-06-09
      • 2014-09-25
      相关资源
      最近更新 更多