0

NSMutableDictionaryJSON 文字列から作成された があります。

NSArray問題は、 aと a の間でかなり複雑なデータ比較を行う必要があることですNSMutableDictionary。そうするための効率的な方法がわかりません。

辞書は次のようになります。

dictionaryMain

0 = {
    key1 = value1;
    key2 = value2;
    key3 = {
        subKey1 = {
            subSubKey1 = {
                inner1 = apples;
                inner2 = oranges;
            };
            subSubKey2 = {
                inner1 = grapes;
                inner2 = lemons;
            };
            subSubKey3 = {
                inner1 = mangoes;
                inner2 = kiwis;
            };
        };
    };
    key4 = {
        subKey1 = {
            subSubKey1 = {
                inner1 = pineapples;
                inner2 = apples;
            };
            subSubKey2 = {
                inner1 = oranges;
                inner2 = mangoes;
            };
        };
    };
};

1 = {
    key1 = value1;
    key2 = value2;
    key3 = {
        subKey1 = {
            subSubKey1 = {
                inner1 = watermelon;
                inner2 = grapes;
            };
            subSubKey7 = {
                inner1 = bananas;
                inner2 = oranges;
            };
        };
    };
    key4 = {
        subKey1 = {
            subSubKey5 = {
                inner1 = kiwis;
                inner2 = mangoes;
            };
        };
    };
};

// ... and so on

arrayOfKeys次のようないくつかのsubSubKeysを持つ配列があります。

arrayOfKeys

{
    subSubKey5,
    subSubKey7,
    subSubKey10
}

my をループして、NSMutableDictionaryで定義されたものと同じキーを持つオブジェクトのみを選択する必要がありますarrayOfKeys。これらの選択されたオブジェクトは、新しい辞書に追加されます。

たとえば、 がarrayOfKeys含まれている場合subSubKey7オブジェクト [1]は から選択されます。これは、オブジェクトNSMutableDictionaryの奥深くにあるキーの名前が であるためsubSubKey7です。

これを行う簡単な方法を見つけようとしましたが、実行可能な解決策を思いつくことができませんでした。私が考えられる唯一のことは、多くのネストされたループとダーティクイックコードを使用することです。

これを理解するのに2日間費やしました。この問題の解決策はありますか?

ありがとう!

4

1 に答える 1

2

渡された辞書をチェックし、それ自体を呼び出してサブ辞書を処理する再帰的なメソッド (または関数) を使用する必要があります。メソッドは、見つかったものと、それ自体を呼び出したときに見つかったものを返す必要があります。

(1 つのレベルからの) 1 つの結果配列のみが存在する必要がある場合、メソッドはそれが見つかるとすぐに、またはそれ自体を呼び出した結果が非 nil になるとすぐに返すことができます。

于 2013-07-29T21:57:28.773 に答える