我在iOS 4的XCode 3.2.3中编写了一个应用程序。在我的代码中,我创建了一个NSDiction的NSArray,每个包含两个键/值对,一个字符串和NSDiction的NSArray(有点令人困惑,我知道)。只是给你一个视觉,这里是结构:
<NSArray>
<NSDictionary>
<NSString/>
<NSArray>
<NSDictionary/>
<NSDictionary/>
...
</NSArray>
</NSDictionary>
...
</NSArray>
奇怪的是,当我向最内层的NSArray添加一个新的NSDictionary时,它似乎将相同的字典添加到外部NSDictionaries的每个中包含的NSArray中。以下是我将最里面的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 :(得分:4)
您需要发布更多代码。
[[outerDict objectForKey:@"innerArray"] addObject:innerDict];
仅将innerDict
添加到innerArray
中的outerDict
,而不是其他内容。
那就是,您可能会将相同的innerArray
两次放入两个不同的outerDict
中,如下所示:
NSMutableArray* innerArray=[NSMutableArray array];
[outerDict1 setObject:innerArray forKey:@"innerArray"];
[outerDict2 setObject:innerArray forKey:@"innerArray"];
这会两次添加相同 innerArray
,而不是两个独立数组。然后,如果您修改innerArray
中的outerDict1
,那么也会修改innerArray
中的outerDict2
,因为这两个是相同的数组。