由于需要将类似的对象添加到数组中,因此我以这种方式创建了新字典。

NSMutableDictionary* existingStepDict = [[[arrayForSteps objectAtIndex:0] mutableCopy] autorelease];
[arrayForSteps addObject:existingStepDict];
[existingStepDict release];


现在,这里发生的事情是,稍后当我在任一词典中更改某些内容时,另一本也得到更新。我要求这两个词典都必须独立运作。

为此,我阅读了字典的Deep-copy,其代码是这样的。

   NSMutableDictionary* existingStepDict = [[[arrayForSteps objectAtIndex:0] mutableCopy] autorelease];

   NSMutableDictionary* destination = [NSMutableDictionary dictionaryWithCapacity:0];

   NSDictionary *deepCopy = [[NSDictionary alloc] initWithDictionary:existingStepDict copyItems: YES];
   if (deepCopy) {
        [destination addEntriesFromDictionary: deepCopy];
        [deepCopy release];
   }
   //add Properties array to Steps Dictionary
   [arrayForSteps addObject:destination];


但这也没有反映出差异。我知道我在这里犯了一些小错误。
但是有人可以帮助我取得结果吗?

非常感谢!

最佳答案

有一种简单的方法可以使用NSCoding(序列化)协议获取NSDictionary或NSArray的完整深层副本。

- (id) deepCopy:(id)mutableObject
{
    NSData *buffer = [NSKeyedArchiver archivedDataWithRootObject:mutableObject];
    return [NSKeyedUnarchiver unarchiveObjectWithData: buffer];
}


这样,您可以在一个步骤中复制任何对象及其包含的所有对象。

10-08 03:22