2010-07-09 121 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