我有一个{J}字符串创建的NSMutableDictionary
。
问题是我需要在NSArray
和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
,其中有一些subSubKey
如下:
arrayOfKeys
{
subSubKey5,
subSubKey7,
subSubKey10
}
我需要遍历NSMutableDictionary
并仅选择具有arrayOfKeys
定义的相同键的对象。这些选定的对象将被添加到新词典中。
例如,如果arrayOfKeys
包含subSubKey7
,则对象[1] 将从NSMutableDictionary
中选择,因为其内部的一个键具有名称subSubKey7
。
我试图想出一个简单的方法来做到这一点,但我无法想出一个可行的解决方案。我唯一能想到的就是使用大量嵌套循环和脏快速代码。
我花了两天时间试图解决这个问题。这个问题的任何解决方案,伙计们?
谢谢!
答案 0 :(得分:2)
您应该使用递归方法(或函数)来检查传递的字典并调用自身来处理任何子字典。该方法应该返回它找到的任何内容以及它自己调用时发现的任何内容。
如果只有一个结果数组(来自一个级别),该方法可以在找到后立即返回,或者一旦调用自身的结果为非零,就会返回。