2010-10-02 8 views
17

Ho due NSMutableArray pieno di oggetto dati. come faccio a confrontare entrambi gli array e unire se viene rilevata una modifica.C'è un modo per unire due NSMutableArray nell'obiettivo c?

es: Array1= index(0) userName = {'a',1,'address'} index(1) userName = {'b',2,'address'}

Array2= index(0) userName = {'c',3,'address'} index (1) userName = {'b',2,'address'}

risultato è: Array= index(0) userName = {'a',1,'address'} index (1) userName = {'b',2,'address'} index(2) userName = {'c',3,'address'}

Aiutateci

risposta

50

Un modo semplice è quello di utilizzare i set:

NSMutableSet *set = [NSMutableSet setWithArray:array1]; 
[set addObjectsFromArray:array2]; 

NSArray *array = [set allObjects]; 

Anche se si dovrà ordinare array te stesso dopo.

(N.B., ho usato i nomi in lettere minuscole per le variabili come di solito è usuale).

+0

Questa soluzione non ritorna matrice unica per gli oggetti personalizzati. Qualche idea su come farlo funzionare? –

+1

Risposta alla mia domanda precedente: Ho perso la creazione di metodi isEqual per le mie classi personalizzate. Ecco come l'ho fatto: http://stackoverflow.com/q/254281/127036 –

+0

I suoi lavori per me! :) – Hemang

11
NSArray *array1, *array2; 

...

MSMutableArray *result = [array1 mutableCopy]; 
for (id object in array2) 
    { 
    [result removeObject:object]; // make sure you don't add it if it's already there. 
    [result addObject:object]; 
    }