2010-07-09 74 views
0

我正在为iOS 4在XCode 3.2.3中编写一个应用程序。在我的代码中,我创建了NSDictionaries的NSArray,每个NSDray包含两个键/值对,一个字符串和一个NSArray NSDictionaries(有点令人困惑,我知道)。只是给你视觉,这里的结构:将NSArray添加到NSDictionary导致问题

<NSArray> 
    <NSDictionary> 
     <NSString/> 
     <NSArray> 
      <NSDictionary/> 
      <NSDictionary/> 
      ... 
     </NSArray> 
    </NSDictionary> 
    ... 
</NSArray> 

有什么奇怪的是,当我添加一个新的NSDictionary到最里面的NSArray,似乎增加包含在的每个相同的字典到的NSArray外部NSDictionaries。下面是我如何将最里面的NSDictionary到最里面的NSArray:

[[outerDict objectForKey:@"innerArray"] addObject:innerDict]; 

所以,只是为了回顾一下,我想要的输出是这样的:

<outerArray> 

    <outerDict1> 
     <string> 
     <innerArray1> 
      <innerDict1> 
      <innerDict2> 
     </innerArray1> 
    </outerDict1> 

    <outerDict2> 
     <string> 
     <innerArray2> 
      <innerDict3> 
      <innerDict4> 
     </innerArray2> 
    </outerDict2> 

<outerArray> 

但我真的开始是这样的:

<outerArray> 

    <outerDict1> 
     <string> 
     <innerArray1> 
      <innerDict1> 
      <innerDict2> 
      <innerDict3> 
      <innerDict4> 
     </innerArray1> 
    </outerDict1> 

    <outerDict2> 
     <string> 
     <innerArray2> 
      <innerDict1> 
      <innerDict2> 
      <innerDict3> 
      <innerDict4> 
     </innerArray2> 
    </outerDict2> 

<outerArray> 

注意,内NSDictionaries被添加到每 innerArray。对于我的生活,我无法弄清楚为什么!

任何帮助将非常感激,谢谢!

-Matt

+0

你可以发布创建这整个outerArray的代码? '[[outerDict objectForKey:@“innerArray”] addObject:innerDict];'看起来正确。 – 2010-07-09 16:01:30

回答

4

您需要发表更多代码。

[[outerDict objectForKey:@"innerArray"] addObject:innerDict]; 

增加innerDictinnerArrayouterDict,没有别的。

也就是说,你可能已经把同样innerArray两次到两个不同的outerDict,像这样:

NSMutableArray* innerArray=[NSMutableArray array]; 

[outerDict1 setObject:innerArray forKey:@"innerArray"]; 
[outerDict2 setObject:innerArray forKey:@"innerArray"]; 

这增加了相同innerArray两次,而不是两个独立的阵列。然后,如果您修改innerArrayouterDict1,那也会修改innerArrayouterDict2,因为这两个是相同的数组。

+0

谢谢你的快速和准确的回应!你说得对,那是我为每个outerDict添加了innerArray的同一个实例。问题解决了。 – mag725 2010-07-09 20:28:22

+0

我们在SO训练有素,能够阅读您的想法:) – Yuji 2010-07-09 23:04:18