将NSMutableDictionaries嵌套在NSMutableDictionaries中的NSMutableArrays中

时间:2012-11-02 11:23:40

标签: objective-c xml nsmutablearray nsmutabledictionary

所以我有一些XML结构如下:

<wdata>
    <wid>abc123</wid>
    <wname>Main Name</wname>
    <wauthor>Author</wauthor>
    <plist>
        <pdata>
            <pid>def456_0</pid>
            <pname>Sub Name</pname>
            <ilist>
                <idata>
                    <iid>ghi789_0</iid>
                    <iname>iName</iname>
                    <ivalue>32</ivalue>
                </idata>
                <idata>
                    <iid>ghi789_1</iid>
                    <iname>iName</iname>
                    <ivalue>23</ivalue>
                </idata>
            </ilist>
        </pdata>
        <pdata>
            <pid>def456_1</pid>
            <pname>Sub Name</pname>
            <ilist>
                <idata>
                    <iid>ghi789_2</iid>
                    <iname>iName</iname>
                    <ivalue>24</ivalue>
                </idata>
                <idata>
                    <iid>ghi789_3</iid>
                    <iname>iName</iname>
                    <ivalue>42</ivalue>
                </idata>
            </ilist>
        </pdata>
    </plist>
</wdata>

因此<plist>可以包含任意数量的<pdata>,每个<ilist>中的<pdata>可以包含任意数量的<idata>

我想将这些数据存储在Objective C中。我猜测最好的方法是<wdata>是一个NSMutableDictionary对象,<plist>是一个NSMutableArray,包含每个{{{NSMutableDictionary>对象的数组。 1}},然后每个<pdata>都是NSMutableArrays,包含每个<ilist>的NSMutableDictionary对象数组。 (!?)

我的问题是我正在努力访问字典中的数组,并且我正在努力将字典添加到字典中的数组。

例如,我使用以下代码将NSMutableDictionary添加到<idata>

<plist>

但是我在编译时遇到“无法识别的选择器”错误。

任何人都可以帮我访问并向我的嵌套词典和数组添加数据吗?

提前致谢!

1 个答案:

答案 0 :(得分:2)

此处执行此行

[[wdata objectForKey:@"plist"] addObject:pDictCopy];

您的[wdata objectForKey:@"plist"]必须返回NSMutableArray,您可以NSLog进行交叉验证,并检查它是否包含NSMutableArray

最好的方法是首先创建所有对象,意味着为字典设置对象,将字典添加到数组,然后将这些数组设置为字典,然后再设置为..