0

したがって、次のような構造の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>各inに<pdata>は任意の数の。を含めることができます<idata>

このデータをObjectiveCに保存したいと思います。最良のアプローチは<wdata>NSMutableDictionaryオブジェクトであり<plist>、それぞれのNSMutableDictionaryオブジェクトの配列を含むNSMutableArray<pdata>であり、それぞれ<ilist>がそれぞれのNSMutableDictionaryオブジェクトの配列を含むNSMutableArraysであると推測しています<idata>。(!?)

私の問題は、辞書内の配列にアクセスするのに苦労していることと、辞書内の配列に辞書を追加するのに苦労していることです。

たとえば、次のコードを使用してNSMutableDictionaryを次のコードに追加しています<plist>

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

しかし、コンパイル時に「認識されないセレクター」エラーが発生します。

ネストされた辞書や配列にアクセスしてデータを追加するのを手伝ってくれる人はいますか?

前もって感謝します!

4

1 に答える 1

2

ここでこの行を実行します

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

を返す[wdata objectForKey:@"plist"]必要があります。これは、でNSMutableArray相互検証できNSLog、?が含まれているかどうかを確認しNSMutableArrayます。

そして、最善のアプローチは、最初にすべてのオブジェクトを作成することです。つまり、ディクショナリのオブジェクトを設定し、ディクショナリを配列に追加してから、これらの配列をディクショナリに設定します。

于 2012-11-02T11:35:06.633 に答える