【问题标题】:NSdictionary object in plist needs to be a array of arrays, how to convert?plist中的NSdictionary对象需要是数组的数组,怎么转换?
【发布时间】:2010-06-28 19:39:48
【问题描述】:

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

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

我还希望字典中的项目具有项目 0、项目 1 等,因此完成后看起来像这样,因此我可以在向下钻取 UItable 中使用它。

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

感谢您对问题的反馈,我重新编写了它。

迈克尔

【问题讨论】:

  • 为什么需要将其转换为数组?您将丢失密钥中编码的信息。如果信息由键构成,则通常需要键。

标签: iphone uitableview plist nsdictionary


【解决方案1】:

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

您只想要值吗?您是否需要按键、值、键、值的顺序排列它们?他们需要按某种顺序排列吗?你想让数组替换字典吗?数组本身需要吗?


鉴于您正在进行的重写程度,我建议创建一个容器——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

【讨论】:

  • 我是新手,你能指出我学习枚举的正确方向吗?感谢您的宝贵时间。
  • 这太棒了..显然我需要做这个阅读。如何在两个答案上打勾?
【解决方案2】:

单击类型列中的“字典”值并将其更改为“数组”。

【讨论】:

    【解决方案3】:

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

    【讨论】:

    • 订单将是未指定的。
    【解决方案4】:

    假设您将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”、“项目 1”格式,以便我可以推送到新的视图控制器,我看到的所有示例都有这种格式推送风景。我错了吗?
    • 现在您不需要它来显示表格视图。你根本不需要数组。 “Item 0”、“Item 1”只是 plist 编辑器显示数组的方式,以便您可以按顺序查看元素。它们不会出现在实际的操作数组中。对于表格视图,您需要有序数据,通常您为此创建一个数组,但不要求您以这种方式存储数据。如果您愿意,可以动态创建表示表格行的数组。这就是 Core Data 的处理方式。
    • 好的,我得研究一下……每一个向下钻取或 UItableview 的示例都使用具有“项目 0,项目 1”格式的字典或数组。没有这些,我的钻取不会加载。我会做一些阅读。谢谢。
    猜你喜欢
    • 2010-11-23
    • 2021-06-07
    • 1970-01-01
    • 1970-01-01
    • 2018-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多