Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 是否将NSMutableDictionary的内容复制到另一个NSMutableDictionary?_Iphone_Objective C_Nsmutabledictionary - Fatal编程技术网

Iphone 是否将NSMutableDictionary的内容复制到另一个NSMutableDictionary?

Iphone 是否将NSMutableDictionary的内容复制到另一个NSMutableDictionary?,iphone,objective-c,nsmutabledictionary,Iphone,Objective C,Nsmutabledictionary,我有一个NSMutableDictionary其中的每个元素都是另一个字典。将其内容复制到另一个NSMutableDictionary中的最佳方法是什么?我试过使用: firstDictionary = [NSMutableDictionary dictionaryWithDictionary:secondDictionary]; 但是,我不确定这是否是最好的方法。你说的“最好”是什么意思? 无论如何,我在这里列出了一些方法: 第一本字典= [NSMutableDictionary 字典与字典

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

firstDictionary = [NSMutableDictionary dictionaryWithDictionary:secondDictionary];
但是,我不确定这是否是最好的方法。

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

  • 第一本字典= [NSMutableDictionary 字典与字典:第二本字典]
  • [[NSC] initWithDictionary:secondDictionary]; //别忘了稍后发布
  • 使用深度复制
  • 使用浅拷贝
  • 检查NSDictionary方法


    它通过调用项目类的copyWithZone:方法来实现元素的深度复制。您必须自己在方法中复制字段。

    您还可以使用copy和mutableCopy在可变和不可变字典之间切换

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

    遵守NSCopying协议,并在每个对象上执行copyWithZone


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

    至少,它是最具描述性的。你为什么认为这不是最好的?您需要元素的深度副本还是浅层副本?我需要元素的深度副本。深度副本意味着您必须复制每个元素的每个字段(这反过来意味着字段字段的深度副本等等)。任何集合类都不提供该功能。你必须自己处理。已经发布[点击这里][1]?希望你能帮助。。。[1]: