【问题标题】:Nesting NSMutableDictionaries inside NSMutableArrays inside NSMutableDictionaries在 NSMutableDictionaries 中的 NSMutableArrays 中嵌套 NSMutableDictionaries
【发布时间】:2012-11-02 11:23:40
【问题描述】:

所以我有一些结构如下的 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>

所以&lt;plist&gt;可以包含任意数量的&lt;pdata&gt;,每个&lt;pdata&gt;中的&lt;ilist&gt;可以包含任意数量的&lt;idata&gt;

我想将这些数据存储在Objective C中。我猜最好的方法是让&lt;wdata&gt;成为一个NSMutableDictionary对象,&lt;plist&gt;是一个NSMutableArray,其中包含每个&lt;pdata&gt;的NSMutableDictionary对象数组,然后每个&lt;ilist&gt; 都是NSMutableArrays,其中包含每个&lt;idata&gt; 的NSMutableDictionary 对象数组。 (!?)

我的问题是我很难访问字典中的数组,并且我很难将字典添加到字典中的数组中。

例如,我使用以下代码将 NSMutableDictionary 添加到&lt;plist&gt;

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

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

谁能帮我访问和添加数据到我的嵌套字典和数组?

提前致谢!

【问题讨论】:

    标签: objective-c xml nsmutablearray nsmutabledictionary


    【解决方案1】:

    这里执行这一行

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

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

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

    【讨论】:

    • aah,在&lt;wdata&gt; 的字典中,在&lt;plist&gt; 下,我使用的值是@[](我猜这是NSArray 的快捷方式)而不是NSMutableArray。 - 我改变了它,它开始工作了!感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 2014-11-23
    • 1970-01-01
    • 2016-10-08
    • 2015-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多