2011-01-19 14 views
59

JavaScript concat() işlevinin Objective-C karşılığı nedir?Objective-C'de iki diziyi nasıl birleştiririm?

Her iki nesnenin de diziler olduğunu varsayarsak bunları nasıl birleştirirdiniz?

+0

Calendrical işlemleri yapıyormuşsunuz gibi görünüyor. Lütfen sizin için bunları yapmak için 'NSCalendar' ve' NSDateComponents' ve arkadaşlarını kullanmayı düşünün. Bunlar önemsiz bir konu değildir. Aylar sürüyor mu? Gün ışığından yararlanma saati ne dersin? Kaç saniye? –

+0

@DaveDeLong - Şu anda küçük bir Javascript Kütüphanesi taşıyorum. Asıl yeniden yazım bittikten sonra kodu yeniden kodlayacağım. İlk hedefim, bilgiyi Objective-C'de almak ve daha sonra optimize etmektir. – Moshe

cevap

192

NSArray sitesindeki arrayByAddingObjectsFromArray: JavaScript'in .concat() yönteme daha çok ya da daha az eşdeğerdir:

NSArray *newArray=[firstArray arrayByAddingObjectsFromArray:secondArray]; 

Not: firstArray nil ise, newArray sıfır olacaktır. Bu kullanılarak düzeltilebilir şunlardır:

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

Bu, "firstArray" ın bir "NSMutableArray" olmasını gerektirir mi? – Moshe

+2

no, bu bir NSArray – codelark

+4

@Moshe yöntemidir. Yeni (değişmez) bir NSArray nesnesi döndürür ve özgün diziyi değiştirmez, bu nedenle NSArray nesnelerini düzgün çalışır. – grahamparks

2

İşte sadece boş bir dizi ile başlayan bir simetrik & basit bir yolu var:

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

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

sen şerit çıkış çiftleri istiyorsanız

İlgili konular