0

首先,我发现了类似的东西: NSMutableDictionary 的深层可变副本, 但它并没有解决我的问题。

我有一个 NSMutableDictionary 作为模板。

NSMutableDictionary *mutableDictionaryTemplate = [NSMutableDictionary dictionaryWithObjectsAndKeys: @"obj1, @"key1",@"obj2, @"key2",nil];

现在我想复制这本字典,然后更改一些部分,然后将其保存在 NSMutable 数组中。

NSMutableArray *savedIterations = [NSMutableArray new];

//some loop that normally would change the objects added
int i=0;
for (i < 5){

    NSMutableDictionary *copiedDictionary = [mutableDictionaryTemplate copy];
    [copiedDictionary setObject:@"obj3" forKey:@"key3"];
    [savedIterations addObject:copiedDictionary];

    i++;
}

我的问题是,一旦我复制了 NSMutableDictionary “mutableDictionaryTemplate”,它就不再是可变的。但我需要复制它,否则我的 NSMutableArray “savedIterations”的每个索引都会有相同的 NSMutableDictionary(至少我是这么认为的)。我也尝试了可变副本,但是当我更改“copiedDictionary”时,我更改了“mutableDictionaryTemplate”。我认为我对必须复制的内容和不复制的内容以及如何正确复制内容有些混乱。如果有人能指出我正确的方向,那就太好了。

4

1 回答 1

1

你可以试试这个:

    NSMutableDictionary *destinationDictionary = (NSMutableDictionary *)CFBridgingRelease(CFPropertyListCreateDeepCopy(kCFAllocatorDefault, (__bridge CFPropertyListRef)(sourceDictionary), kCFPropertyListMutableContainers));
于 2013-09-22T02:07:59.277 回答