2011-01-05 107 views
6

我有一个NSMutableDictionary其中每个元素是另一个字典。我可以将其内容复制到另一个NSMutableDictionary的最佳方式是什么?我试过使用:将NSMutableDictionary的内容复制到另一个NSMutableDictionary中?

firstDictionary = [NSMutableDictionary dictionaryWithDictionary:secondDictionary]; 

但不知道这是否是最好的方式来做到这一点。

+0

至少,它是最具描述性的。你为什么认为这不是最好的?你需要一个深浅的元素拷贝吗? – Schultz9999 2011-01-05 02:44:12

+0

我需要元素的深层副本。 – NSExplorer 2011-01-05 02:46:52

+0

深度复制意味着您必须复制每个元素的每个字段(这意味着字段的字段的深层副本等)。该功能不是由任何集合类提供的。你必须自己照顾自己。 – Schultz9999 2011-01-05 03:07:52

回答

5

检查的NSDictionary initWithDictionary:copyItems:方法后

  • 释放。

    它通过调用copyWithZone:item的类的方法可以深入复制元素。你将不得不照顾自己在该方法中复制字段。

  • 0

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

    1. firstDictionary = [的NSMutableDictionary dictionaryWithDictionary:secondDictionary];
    2. [[NSDictionary alloc] initWithDictionary:secondDictionary]; //不要忘了用深层副本
    3. 使用浅拷贝
    10

    您还可以使用copy和mutableCopy在可变和不可变字典之间跳转。

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

    顺应NSCopying协议,做好每一对象copyWithZone。

    如果NsMutableDictionary包含另一个字典,其中包含另一个字典,那么您需要在每个字典上对所有级别执行copyWithZone。

    相关问题