2011-01-05 18 views
6

Ho un NSMutableDictionary ogni elemento di cui è un altro dizionario. Qual è il modo migliore in cui posso copiare il suo contenuto in un altro NSMutableDictionary? Ho provato con:Copia del contenuto di un NSMutableDictionary in un altro NSMutableDictionary?

firstDictionary = [NSMutableDictionary dictionaryWithDictionary:secondDictionary]; 

Tuttavia non so se questo è il modo migliore per farlo.

+0

Come minimo, è il più descrittivo. Perché pensi che non sia il migliore? Hai bisogno di una copia profonda o superficiale di elementi? – Schultz9999

+0

Ho bisogno di una copia profonda degli elementi. – NSExplorer

+0

Copia profonda significa che devi fare una copia di ogni singolo campo di ogni elemento (che a sua volta significa copia profonda dei campi dei campi e così via). Quella funzionalità non è fornita da alcuna classe di raccolta. Devi prenderti cura di te stesso. – Schultz9999

risposta

5

Controllare il metodo NSDictionary initWithDictionary:copyItems:.

Consente la copia profonda di elementi tramite chiamata copyWithZone: metodo della classe dell'articolo. Dovrai occuparti di copiare te stesso i campi con il metodo.

0

Cosa intendi per "migliore"?
In ogni caso, ho elencato alcuni modi qui:

  1. firstDictionary = [NSMutableDictionary dictionaryWithDictionary: secondDictionary];
  2. [[allocazione NSDictionary] initWithDictionary: secondDictionary]; // non dimenticare di rilasciare entro
  3. usando copia completa
  4. usando copia superficiale
10

È anche possibile passare da dizionari mutabili a non mutabili utilizzando copia e mutableCopy.

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

Conforme al protocollo NSCopying e copiare copyWone su ogni oggetto.

Se NsMutableDictionary contiene un altro dizionario, che contiene un altro dizionario, è necessario copiare copyWithZone su ciascun dizionario a tutti i livelli.

Problemi correlati