由于需要将类似的对象添加到数组中,因此我以这种方式创建了新字典。
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];
}
这样,您可以在一个步骤中复制任何对象及其包含的所有对象。