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 に答える