2013-07-29 125 views
0

我有一个NSMutableDictionary这是从一个JSON字符串创建的。比较NSArray值与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 

我有里面有一些subSubKey S的如下阵列arrayOfKeys

arrayOfKeys

{ 
    subSubKey5, 
    subSubKey7, 
    subSubKey10 
} 

我需要循环通过我的NSMutableDictionary并仅选择那些与arrayOfKeys中定义的键相同的对象。这些选定的对象将被添加到新的字典中。

例如,如果arrayOfKeys包含subSubKey7,则对象[1]将从NSMutableDictionary由于键深深浸入内部,具有名称subSubKey7选择。

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

我花了两天的时间来解决这个问题。这个问题的任何解决方案,家伙?

谢谢!

+1

如果你可以重构json以包含对象1作为subkey7的值,或者如下面的建议某些函数说明如果子键= x,返回对象,否则再次调用函数 – aug2uag

回答

2

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

如果应该只有一个结果数组(从一个级别),该方法可以一找到它就立即返回,或者只要调用本身的结果非零即可返回。

+0

您是否在引入术语“递归” OP还是假设OP知道这意味着什么? –

+1

我的目标是触发对使用知识或术语谷歌的认识...... – Wain