2011-01-19 25 views
59

Jaki jest odpowiednik obiektu Objective-C funkcji JavaScript concat()?Jak połączyć dwie tablice w Objective-C?

Zakładając, że oba obiekty są tablicami, jak by je połączyć?

+0

Wygląda na to, że wykonujesz operacje kalendarza. Rozważ użycie 'NSCalendar' i' NSDateComponents' oraz znajomych, aby zrobić to za Ciebie. Nie są one trywialnym tematem. Czy bierzesz pod uwagę miesiące przestępne? A co z czasem letnim? A co z sekundami przestępnymi? itp. –

+0

@DaveDeLong - Właśnie przenoszę małą bibliotekę JavaScript. Będę refaktoryzować kod, gdy skończy się faktyczne przepisywanie. Moim pierwszym celem jest zdobycie informacji w Objective-C i późniejsza optymalizacja. – Moshe

Odpowiedz

192

NSArray „s arrayByAddingObjectsFromArray: jest bardziej lub mniej równoważne .concat() metodą Javascript w:

NSArray *newArray=[firstArray arrayByAddingObjectsFromArray:secondArray]; 

Uwaga: Jeśli firstArray jest zerowa, newArray będzie zerowe. Można to naprawić za pomocą następujących czynności:

NSArray *newArray=firstArray?[firstArray arrayByAddingObjectsFromArray:secondArray]:[[NSArray alloc] initWithArray:secondArray]; 

Jeśli chcesz strip-duplikaty:

NSArray *uniqueEntries = (NSArray *)[[NSSet setWithArray:newArray] allObjects]; 
+2

Czy wymagałoby to "firstArray" jako "NSMutableArray"? – Moshe

+2

nie, jest to metoda na NSArray – codelark

+4

@Moshe Zwraca nowy (niezmienny) obiekt NSArray i nie zmienia oryginalnej tablicy, więc działa poprawnie na obiektach NSArray. – grahamparks

2

Oto symetryczny & prosty sposób po prostu zaczynając pustej tablicy:

NSArray* newArray = @[]; 
newArray = [newArray arrayByAddingObjectsFromArray:firstArray]; 
newArray = [newArray arrayByAddingObjectsFromArray:secondArray];