我有一个字典.plist,其中有一个子数组,但是在转换为Json时转换为数组。该项目是下图中的“个人资料”,如您所见,它是一个字典,如何以编程方式转换为数组“:
alt text http://www.baublet.com/images/dict2.png
我还希望字典中的项目包含项目0,项目1等,所以它在完成时看起来像这样,所以我可以在深入的UItable中使用它。
alt text http://www.baublet.com/images/array4.png
感谢您对该问题的反馈,我对其进行了重新设计。
迈克尔
答案 0 :(得分:0)
鉴于字典包含一系列键/值对,目前尚不清楚将其转换为数组甚至意味着什么。同样,你还没有说出你想对阵列做什么。
你想要的只是价值观吗?您是否需要密钥,价值,密钥,价值订单?他们需要按某种顺序吗?你想让数组替换字典吗?你需要它自己的阵列吗?
考虑到您正在进行的重写程度,我建议您根据需要创建一个容器 - NSMutableDictionary或NSMutableArray - 然后沿着现有容器向下走,以您需要的任何形式在可变容器中插入新项。
使用for (... in ...)
枚举字典和数组会很简单。
只要您继续使用原始文件中找到的字符串值 - 没有理由复制它们 - 那么内存使用就不会非常恶劣。
相关文件:
答案 1 :(得分:0)
单击Type列中的“Dictionary”值并将其更改为“Array”。
答案 2 :(得分:0)
要放弃字典的键并获取值,请使用allValues
。
答案 3 :(得分:0)
假设您将items
初始化为NSMutableArray,以下是处理此问题的最简单方法:
NSDictionary *profile;
NSArray *pArray;
for (NSMutableDictionary *anItem in items) {
profile=[anItem valueForKey:@"profile"];
pArray=[NSArray arrayWithObjects:[profile valueForKey:@"car"],[profile valueForKey:@"color"],[profile valueForKey:@"make"],nil];
[anItem setValue:pArray forKey:@"profile"];
}
这将确保创建的数组的顺序始终相同。
但是,我不得不说,我认为你很少遇到必须将嵌套字典转换为数组的情况。对于tableview,你当然不需要这样做。