我有这样的NSMutableDictionary:
<dict>
<key>Dictionaries</key>
<dict>
<key>One</key>
<dict>
<key>Data</key>
<data>
qqqqqg==
</data>
</dict>
<key>Two</key>
<dict>
<key>Data</key>
<data>
qqqqqg==
</data>
</dict>
</dict>
</dict>
本质上是一个
[NSMutableDictionary]
,具有其他子字典,所有子字典都使用相同数量的对象和键。问题是,当我尝试在现有的“词典”中添加另一本词典时,它会擦除所有其他词典。我尝试使用几种功能,包括setObject: forKey:
,setDictionary: forKey:
,addEntriesFromDictionary:
...NSMutableDictionary* mainDictionary = [[NSMutableDictionary alloc] initWithDictionary:otherDictionary];
dictionaries = [mainDictionary objectForKey:@"Dictionaries"];
[dictionaries addEntriesFromDictionary:otherDictionary];
我一定在做错事,或者使用的功能不正确。如何在字典中添加
Three
,Four
等的示例将非常有帮助。谢谢。 最佳答案
拨打电话时
NSMutableDictionary* mainDictionary = [[NSMutableDictionary alloc] initWithDictionary:otherDictionary];
唯一可以保证得到的可变字典是外部字典(即
mainDictionary
)。如果otherDictionary
中的对象是可变的,则它们将保持可变;如果otherDictionary
中的对象是不可变的,则它们将保持不变。似乎您要传递给
otherDictionary
的initWithDictionary:
是从属性列表构造的。在这种情况下,可以通过将NSPropertyListMutableContainers
传递给propertyListWithData:options:format:error:
方法来强制其所有容器可变,如下所示:NSMutableDictionary *otherDictionary = [NSPropertyListSerialization
propertyListWithData:myData
options:NSPropertyListMutableContainers
format:NULL
error:NULL
];