将一个NSMutableDictionary的内容复制到另一个NSMutableDictionary中?

7

我有一个NSMutableDictionary,其中每个元素都是另一个字典。我应该如何最好地将其内容复制到另一个NSMutableDictionary中?我尝试使用以下方法:

firstDictionary = [NSMutableDictionary dictionaryWithDictionary:secondDictionary];

然而,不确定这是否是最佳方法。

至少,它是最具描述性的。你为什么认为它不是最好的?你需要元素的深拷贝还是浅拷贝? - Schultz9999
我需要对元素进行深拷贝。 - NSExplorer
深拷贝意味着你必须复制每个元素的每个字段(这又意味着需要深度复制字段的字段等等)。任何集合类都没有提供这种功能。你必须自己处理。 - Schultz9999
已经发布点击这里。希望你能帮忙... - Ashvin
4个回答

17

你也可以使用copy和mutableCopy在可变和不可变字典之间切换。

- (void) someFunc:(NSMutableDictionary *)myDict {
    NSDictionary *anotherDict = [myDict copy];
    NSMutableDictionary *yetAnotherDict = [anotherDict mutableCopy];
}

6

请查看NSDictionary initWithDictionary:copyItems:方法。

该方法可以通过调用项目类的copyWithZone:方法实现元素的深层复制。您需要在方法中自己复制字段。


0

你所说的“最好”是什么意思?
无论如何,我在这里列出了一些方法:

  1. firstDictionary = [NSMutableDictionary dictionaryWithDictionary:secondDictionary];
  2. [[NSDictionary alloc] initWithDictionary:secondDictionary]; //别忘了稍后释放内存
  3. 使用深拷贝
  4. 使用浅拷贝

0

遵循 NSCopying 协议并对每个对象执行 copyWithZone 操作。

如果 NsMutableDictionary 包含另一个字典,该字典包含另一个字典,则需要在所有级别上对每个字典执行 copyWithZone 操作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接