从 NSDictionary 对象的 NSArray 中,如何获取唯一的 NSArray

Posted

技术标签:

【中文标题】从 NSDictionary 对象的 NSArray 中,如何获取唯一的 NSArray【英文标题】:From NSArray of NSDictionary objects, how to get an NSArray of uniques 【发布时间】:2012-04-12 03:43:22 【问题描述】:

我正在编写一个处理图片相册的应用程序。

我有以下列出专辑的 JSON 文档。


  "Albums": [
    
      "id": 1234,
      "Title": "My Birthday 2008",
      "Category": 
        "id": 0,
        "Name": "Birthdays"
      
    ,
    
      "id": 5678,
      "Title": "Disneyland Trip 2010"
      "Category": 
        "id": 1,
        "Name": "Trips"
      ,
    
  ]

如您所见,相册位于类别中。

我使用 NSJSONSerialization 类将其引入到一个 NSDictionary 对象中,该对象包含一个 NSDictionaries 的 NSArray(根据上述 JSON 的“模式”)。

由此,我想生成一个包含唯一 Categories NSDictionary 对象的 NSArray。比如:


  "Categories": [
    
      "id": 0,
      "Name" : "Birthdays"
    ,
    
      "id": 1,
      "Name" : "Trips"
    ,
  ]

搜索***,我发现了一些看起来像是很好的构建块的东西

categories = [albums valueForKeyPath:@"@distinctUnionOfObjects.Category.Name"];

但这显然只会生成一个 NSString 的 NSArray。我想要的是一个 NSDictionaries 的 NSArray,其中有两个对象,键为“id”和“Name”。如果没有嵌套 if 循环的穷人/蛮力方法,我似乎无法将它们放在一起来获得我想要的东西。我想我正在为 NSDictionary 或 NSArray 类寻找一些实用方法来帮助我更快地做到这一点。

感谢您的帮助。

【问题讨论】:

使用 JSON / SBJSON / JSON 解析器来做这个工作,这里不应该使用 KVC @steven,你能不能显示一些工作代码。 【参考方案1】:

为什么不直接使用 JSON 解析器?它应该给你你想要的。

http://developer.apple.com/library/ios/#documentation/Foundation/Reference/NSJSONSerialization_Class/Reference/Reference.html

【讨论】:

我遗漏了一整节提到我已经在使用 NSJSONSerialization!我会更新原来的帖子。谢谢你的帖子。

以上是关于从 NSDictionary 对象的 NSArray 中,如何获取唯一的 NSArray的主要内容,如果未能解决你的问题,请参考以下文章

如何从 NSDictionary 获取整个对象

如何从 NSDictionary 中删除对象

从 NSDictionary 到 NSString 的所有键和对象

从 NSDictionary 对象的 NSArray 中,如何获取唯一的 NSArray

从 NSDictionary 迁移到 Object 的最佳方式

将 NSDictionary 对象转换为 NSData 对象,反之亦然