plist中的NSdictionary对象需要是一个数组数组,如何转换?

时间:2010-06-28 19:39:49

标签: iphone uitableview plist nsdictionary

我有一个字典.plist,其中有一个子数组,但是在转换为Json时转换为数组。该项目是下图中的“个人资料”,如您所见,它是一个字典,如何以编程方式转换为数组“:

alt text http://www.baublet.com/images/dict2.png

我还希望字典中的项目包含项目0,项目1等,所以它在完成时看起来像这样,所以我可以在深入的UItable中使用它。

alt text http://www.baublet.com/images/array4.png

感谢您对该问题的反馈,我对其进行了重新设计。

迈克尔

4 个答案:

答案 0 :(得分:0)

鉴于字典包含一系列键/值对,目前尚不清楚将其转换为数组甚至意味着什么。同样,你还没有说出你想对阵列做什么。

你想要的只是价值观吗?您是否需要密钥,价值,密钥,价值订单?他们需要按某种顺序吗?你想让数组替换字典吗?你需要它自己的阵列吗?


考虑到您正在进行的重写程度,我建议您根据需要创建一个容器 - NSMutableDictionary或NSMutableArray - 然后沿着现有容器向下走,以您需要的任何形式在可变容器中插入新项。

使用for (... in ...)枚举字典和数组会很简单。

只要您继续使用原始文件中找到的字符串值 - 没有理由复制它们 - 那么内存使用就不会非常恶劣。

相关文件:

http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/Collections/Collections.html#//apple_ref/doc/uid/10000034i

http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/PropertyLists/Introduction/Introduction.html#//apple_ref/doc/uid/10000048i

答案 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,你当然不需要这样做。