2010-10-02 13 views
17

Tengo dos NSMutableArray llenos con un objeto de datos. ¿Cómo comparo tanto la matriz como la fusión si se encuentra algún cambio?¿Hay alguna manera de combinar dos NSMutableArray en el objetivo c?

ejemplo: 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'}

El resultado es: Array= index(0) userName = {'a',1,'address'} index (1) userName = {'b',2,'address'} index(2) userName = {'c',3,'address'}

Por favor, ayudar a

Respuesta

50

Una forma sencilla es utilizar conjuntos:

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

NSArray *array = [set allObjects]; 

, aunque se tiene que ordenar array mismo después.

(N.B., utilicé los nombres en minúscula para las variables como suele ser habitual).

+0

Esta solución no vuelve gama única de objetos personalizados. ¿Alguna pista sobre cómo hacer que eso funcione? –

+1

Responde a mi pregunta anterior: Me perdí la creación de métodos isEqual para mis clases personalizadas. Así es como lo hice: http://stackoverflow.com/q/254281/127036 –

+0

¡Funciona para mí! :) – 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]; 
    } 
Cuestiones relacionadas