2010-10-02 16 views
17

Mam dwie NSMutableArray wypełnione obiektu danych. jak porównać zarówno tablicę, jak i scalić, jeśli jakakolwiek zmiana zostanie znaleziona.Czy istnieje sposób na scalenie dwóch NSMutableArray w celu c?

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

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

Proszę o pomoc

Odpowiedz

50

Łatwym sposobem jest użycie zestawów:

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

NSArray *array = [set allObjects]; 

Chociaż trzeba będzie uporządkować array się potem.

(N.B. Użyłem małych liter dla zmiennych, jak zwykle jest to zwyczajowe).

+0

To rozwiązanie nie zwraca wyjątkową tablicę dla obiektów niestandardowych. Jakąkolwiek wskazówkę, jak to zrobić? –

+1

Odpowiedz na moje własne pytanie powyżej: Brakowało mi tworzenia metod isEqual dla moich niestandardowych klas. Oto, jak to zrobiłem: http://stackoverflow.com/q/254281/127036 –

+0

To działa dla mnie! :) – 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]; 
    } 
Powiązane problemy