将NSArray值与NSMutableDictionary进行比较

时间:2013-07-29 21:44:54

标签: objective-c ios6 nsarray nsdictionary nsmutabledictionary

我有一个{J}字符串创建的NSMutableDictionary

问题是我需要在NSArrayNSMutableDictionary之间进行一些非常复杂的数据比较。我无法找到一种有效的方法。

字典看起来像这样:

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,其中有一些subSubKey如下:

arrayOfKeys

{
    subSubKey5,
    subSubKey7,
    subSubKey10
}

我需要遍历NSMutableDictionary并仅选择具有arrayOfKeys定义的相同键的对象。这些选定的对象将被添加到新词典中。

例如,如果arrayOfKeys包含subSubKey7,则对象[1] 将从NSMutableDictionary中选择,因为其内部的一个键具有名称subSubKey7

我试图想出一个简单的方法来做到这一点,但我无法想出一个可行的解决方案。我唯一能想到的就是使用大量嵌套循环和脏快速代码。

我花了两天时间试图解决这个问题。这个问题的任何解决方案,伙计们?

谢谢!

1 个答案:

答案 0 :(得分:2)

您应该使用递归方法(或函数)来检查传递的字典并调用自身来处理任何子字典。该方法应该返回它找到的任何内容以及它自己调用时发现的任何内容。

如果只有一个结果数组(来自一个级别),该方法可以在找到后立即返回,或者一旦调用自身的结果为非零,就会返回。