Копирование содержимого NSMutableDictionary в другой NSMutableDictionary? - PullRequest
6 голосов
/ 05 января 2011

У меня есть NSMutableDictionary, каждый элемент которого является другим словарем.Как лучше всего скопировать его содержимое в другой NSMutableDictionary?Я пытался использовать:

firstDictionary = [NSMutableDictionary dictionaryWithDictionary:secondDictionary];

Однако не уверен, что это лучший способ сделать это.

Ответы [ 4 ]

14 голосов
/ 26 апреля 2011

Вы также можете переключаться между изменяемыми и неизменяемыми словарями, используя copy и mutableCopy.

- (void) someFunc:(NSMutableDictionary *)myDict {
    NSDictionary *anotherDict = [myDict copy];
    NSMutableDictionary *yetAnotherDict = [anotherDict mutableCopy];
}
6 голосов
/ 05 января 2011

Проверьте метод NSDictionary initWithDictionary: copyItems: .

Позволяет глубокое копирование элементов через вызов copyWithZone: метод класса элемента.Вам придется самостоятельно позаботиться о копировании полей в методе.

0 голосов
/ 05 сентября 2013

Соответствует протоколу NSCopying и выполняет copyWithZone для каждого объекта.

Если NsMutableDictionary содержит другой словарь, который содержит другой словарь ,, то вам нужно выполнить copyWithZone для каждого словаря на всех уровнях.

0 голосов
/ 05 января 2011

Что вы подразумеваете под «лучшим»?
В любом случае, я перечислил несколько способов здесь:

  1. firstDictionary = [NSMutableDictionary dictionaryWithDictionary: secondDictionary];
  2. [[NSDictionaryalloc] initWithDictionary: secondDictionary];// не забудьте выпустить позже
  3. , используя глубокое копирование
  4. , используя поверхностное копирование
...