我有这样的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];


我一定在做错事,或者使用的功能不正确。如何在字典中添加ThreeFour等的示例将非常有帮助。谢谢。

最佳答案

拨打电话时

NSMutableDictionary* mainDictionary = [[NSMutableDictionary alloc] initWithDictionary:otherDictionary];


唯一可以保证得到的可变字典是外部字典(即mainDictionary)。如果otherDictionary中的对象是可变的,则它们将保持可变;如果otherDictionary中的对象是不可变的,则它们将保持不变。

似乎您要传递给otherDictionaryinitWithDictionary:是从属性列表构造的。在这种情况下,可以通过将NSPropertyListMutableContainers传递给propertyListWithData:options:format:error:方法来强制其所有容器可变,如下所示:

NSMutableDictionary *otherDictionary = [NSPropertyListSerialization
    propertyListWithData:myData
                 options:NSPropertyListMutableContainers
                  format:NULL
                   error:NULL
];

08-27 06:56