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 收集嵌套在数组中的 JSON 数据