Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Copy NSMutableDictionary的可变深度副本_Copy_Nsdictionary_Iteration_Nsmutabledictionary_Deep Copy - Fatal编程技术网

Copy NSMutableDictionary的可变深度副本

Copy NSMutableDictionary的可变深度副本,copy,nsdictionary,iteration,nsmutabledictionary,deep-copy,Copy,Nsdictionary,Iteration,Nsmutabledictionary,Deep Copy,首先,我发现了类似的东西: 但这并没有解决我的问题 我有一个NSMutableDictionary作为模板 NSMutableDictionary *mutableDictionaryTemplate = [NSMutableDictionary dictionaryWithObjectsAndKeys: @"obj1, @"key1",@"obj2, @"key2",nil]; 现在我想复制这本字典,然后更改一些部分,然后将其保存在一个NSMutable数组中 NSMutableArray

首先,我发现了类似的东西: 但这并没有解决我的问题

我有一个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++;
}
NSMutableArray*savedItemations=[NSMutableArray new];
//某些循环通常会更改添加的对象
int i=0;
对于(i<5){
NSMutableDictionary*copiedDictionary=[mutableDictionaryTemplate copy];
[copiedDictionary setObject:@“obj3”forKey:@“key3”];
[SavedItems添加对象:copiedDictionary];
i++;
}
我的问题是,一旦我复制了NSMutableDictionary“mutableDictionaryTemplate”,它就不再是可变的了。但我需要复制它,因为否则我的NSMutableArray“savedItemations”的每个索引都会有相同的NSMutableDictionary(至少我这么认为)。我也尝试了可变副本,但在那里,当我更改“copiedDictionary”时,我更改了“可变字典模板”。我想我把我必须复制的东西和不应该复制的东西以及如何正确复制弄得一团糟。 如果有人能给我指出正确的方向,那就太好了。

你可以试试这个:

    NSMutableDictionary *destinationDictionary = (NSMutableDictionary *)CFBridgingRelease(CFPropertyListCreateDeepCopy(kCFAllocatorDefault, (__bridge CFPropertyListRef)(sourceDictionary), kCFPropertyListMutableContainers));