NSMutableDictionary不会追加

时间:2014-05-02 19:29:09

标签: objective-c macos cocoa nsdictionary

我有一个像这样的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等附加我的字典的示例将非常有用。感谢。

1 个答案:

答案 0 :(得分:1)

进行此次通话时

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

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

您传递给otherDictionary的{​​{1}}似乎是从属性列表构建的。如果是这种情况,您可以通过将initWithDictionary:传递给NSPropertyListMutableContainers方法来强制所有容器变为可变,如下所示:

propertyListWithData:options:format:error: