2010-06-28 38 views
2

我有一个字典.plist,它有一个子数组,但是在Json转换期间转换为数组。该项目是“配置文件”下面的图片,你可以看到,这是一个解释,我怎么把程序转换成阵“:plist中的NSdictionary对象需要是数组的数组,如何转换?

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

我也想在字典中的项目有0项,第1项等,所以它看起来像这样完成的时候,所以我可以在向下钻取UItable使用它。

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

感谢您的问题反馈,我重新设计它。

Michael

+0

你为什么需要将它转换为数组?你将失去在密钥中编码的信息。如果信息由密钥构成,则通常需要密钥。 – TechZen 2010-06-29 04:02:11

回答

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

+0

重做问题。 – 2010-06-28 20:02:14

+0

我是一个新手,你可以指点我正确的方向了解枚举。 谢谢你的时间。 – 2010-06-28 23:06:37

+0

这很棒..显然我需要做这个阅读。如何在两个答案上打勾? – 2010-07-02 14:02:05

0

在类型列点击 “词典” 的价值,并将其更改为 “阵列”。

+0

我添加了“编程”。 – 2010-06-28 20:03:00

0

要放弃字典的键并获取值,请使用allValues

+0

但是,订单将不确定。 – bbum 2010-06-28 20:47:20

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。

+0

这是我的理解,你需要在配置文件中的“Item 0”,“Item 1”格式,以便我可以推送到一个新的视图控制器,我看到的所有例子都有这种格式来推动视图。我错了吗? – 2010-06-29 15:04:29

+0

现在你不需要显示一个tableview。你根本不需要数组。 “项目0”,“项目1”只是plist编辑器显示数组的方式,以便您可以按顺序查看元素。它们不出现在实际的操作数组中。对于tableviews你需要有序的数据,通常你为它创建一个数组,但是没有要求你以这种方式存储数据。如果你喜欢,你可以创建代表表格行的数组。这就是Core Data处理它的方式。 – TechZen 2010-06-29 19:55:23

+0

好吧,我将不得不考虑这个...钻取或UItableview的每个示例都使用带有“Item 0,Item 1”格式的字典或数组。没有这些,My drilldowns不加载。我会做一些阅读。谢谢。 – 2010-07-02 14:00:26