NSDictionary 中数组中的 NSArray

Posted

技术标签:

【中文标题】NSDictionary 中数组中的 NSArray【英文标题】:NSArray from array in NSDictionary 【发布时间】:2011-07-28 17:25:41 【问题描述】:

我有一个从远程 PList 加载的 NSDictionary。 它包含一个字典数组:

(
    
    id = "1234";
    count = "45";
    ,
    
    id = "244";
    count = "89";
    ,
    
    id = "9909";
    count = "123";
    
)

如何将它放入 NSArray?我不希望每个键都有单独的数组。 我只想要一个 NSDictionary 的 NSArray。

可能有一个简单的答案,但这一直困扰着我。

谢谢

【问题讨论】:

这是什么“它包含字典数组:我只想要一个 NSDictionary 的 NSArray”。 您所拥有的是一组名称-值对。字典非常擅长保存和操作名称-值对,所以也许这就是您想要做的——将 NVPairs 列表导入字典?如果不是,那么我认为您可能想更好地解释“NSDictionary 的 NSArray”是什么意思。 PList 看起来像这样:<array> <dict> <key>id</key> <real>1234</real> <key>count</key> <real>123</real> </dict> <dict> <key>id</key> <real>223</real> <key>count</key> <real>2</real> </dict> <dict> <key>id</key> <real>777</real> <key>count</key> <real>15523</real> </dict> </array> 创建的 NSDictionary 的根元素是一个没有键的数组。我试图弄清楚如何将此数组放入 NSArray。如果我用一个键添加这个数组,我可以使用 objectForKey 来获取 NSArray。 【参考方案1】:

你说你有一个包含数组的字典。不管数组的键是什么,只要问[dictionary objectForKey:theKey],你就会得到数组。

编辑:从您的 cmets 来看,听起来您只有一个 NSArray,它根本不是 NSDictionary 中的 。如果是这样,您已经拥有了您正在寻找的东西。

【讨论】:

数组没有键。那就是问题所在。 :s @Ty Kroll:那么您就没有“从远程 PList 加载的 NSDictionary ... [包含字典数组的]”。字典中的所有内容都有一个键。如果没有它的键,它不在字典中。所以问题是:如果不是字典,你实际上有什么? 这确实很奇怪。我使用 NSPropertyListSerialization propertyListFromData:mutabilityOption:format:error 从具有上述格式的远程 PList 加载 NSData。也许它应该把我从自己身上救出来。我肯定有很多字典。打印生成的 NSDictionary 显示的内容与我在第一篇文章中显示的内容相似。 @Ty Kroll:你试过问对象它的类是什么吗?听起来你只有一个 NSArray。 哇! __NSCFArray。疯狂的。只需将其转换为 NSArray* 就可以了。很好奇为什么当它实际上是一个 NSArray* 时,我可以将它作为一个 NSDictionary* 传递出去。【参考方案2】:

怎么样:

NSArray *dicts = [NSPropertyListSerialization propertyListWithData:data
                                                           options:0
                                                            format:NSPropertyListOpenStepFormat
                                                             error:NULL];

请注意,这是一种已弃用的 plist 格式(现在首选 XML 或二进制格式)。

【讨论】:

这仅在 >= XCode 4 中可用吗? 没有,很久了。【参考方案3】:

你试过 [字典 objectAtIndex:0]objectAtIndex:0]。尝试在外循环中迭代 objectAtIndex。

一切顺利。

【讨论】:

以上是关于NSDictionary 中数组中的 NSArray的主要内容,如果未能解决你的问题,请参考以下文章

plist中的NSdictionary对象需要是数组的数组,怎么转换?

NSDictionary 无法读取 web 服务中的数组

如何使用 NSDictionary 收集嵌套在数组中的 JSON 数据

替换 iPhone 中 NSDictionary 中的值

如何使用 Swift 将新数组数据添加到 plist 文件中的 NSDictionary

将数组添加到 NSDictionary 中的不同键