2011-01-05 15 views
6

Tengo un NSMutableDictionary cada elemento del cual es otro diccionario. ¿Cuál es la mejor forma en que puedo copiar su contenido en otro NSMutableDictionary? He intentado usar:¿Copiando el contenido de un NSMutableDictionary en otro NSMutableDictionary?

firstDictionary = [NSMutableDictionary dictionaryWithDictionary:secondDictionary]; 

Sin embargo no estoy seguro si esta es la mejor manera de hacerlo.

+0

Como mínimo, es el más descriptivo. ¿Por qué crees que no es el mejor? ¿Necesitas una copia profunda o superficial de los elementos? – Schultz9999

+0

Necesito una copia profunda de los elementos. – NSExplorer

+0

Copia profunda significa que debe hacer una copia de cada campo de cada elemento (lo que a su vez significa una copia profunda de los campos de los campos, etc.). Esa funcionalidad no es proporcionada por ninguna clase de colección. Tienes que encargarte de eso tú mismo. – Schultz9999

Respuesta

5

Compruebe el método de NSDictionary initWithDictionary:copyItems:.

Permite la copia profunda de elementos a través de la llamada copyWithZone: método de la clase del elemento. Tendrá que encargarse de copiar los campos usted mismo dentro del método.

0

¿Qué quiere decir con "mejor"?
De todos modos, hice una lista de algunas maneras aquí:

  1. firstDictionary = [NSMutableDictionary dictionaryWithDictionary: secondDictionary];
  2. [[NSDictionary alloc] initWithDictionary: secondDictionary]; // no se olvide de liberar más tarde
  3. mediante copia profunda
  4. mediante copia superficial
10

También puede saltar entre los diccionarios mutables y no mutables usando copy y mutableCopy.

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

Cumple con NSCopying Protocol y realiza copyWithZone en cada objeto.

Si NsMutableDictionary contiene otro diccionario, que contiene otro diccionario ,, entonces necesita hacer copyWithZone en cada diccionario en todos los niveles.

Cuestiones relacionadas