2011-01-19 24 views
59

Tương đương mục tiêu-C của hàm JavaScript concat() là gì?Làm thế nào tôi có thể kết hợp hai mảng trong Objective-C?

Giả sử cả hai đối tượng đều là mảng, bạn sẽ kết hợp chúng như thế nào?

+0

Có vẻ như bạn đang thực hiện các hoạt động lịch. Vui lòng xem xét sử dụng 'NSCalendar' và' NSDateComponents' và bạn bè để thực hiện chúng cho bạn. Họ không phải là một chủ đề tầm thường. Bạn có đang tính đến những tháng nhuận không? Làm thế nào về thời gian tiết kiệm ánh sáng ban ngày? Điều gì về giây nhuận? vv –

+0

@DaveDeLong - Hiện tại tôi đang chuyển một Thư viện Javascript nhỏ. Tôi sẽ được tái cấu trúc mã khi tôi đã thực hiện với việc viết lại thực tế. Mục tiêu đầu tiên của tôi là lấy thông tin trong Objective-C và tối ưu hóa sau này. – Moshe

Trả lời

192

NSArray 's arrayByAddingObjectsFromArray: là nhiều hay ít tương đương với phương thức JavaScript của .concat():

NSArray *newArray=[firstArray arrayByAddingObjectsFromArray:secondArray]; 

Lưu ý: Nếu firstArray là con số không, newArray sẽ nil. Điều này có thể được cố định bằng cách sử dụng như sau:

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

Nếu bạn muốn bản sao dải-out:

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

Điều này có yêu cầu 'firstArray' là' NSMutableArray' không? – Moshe

+2

không, nó là một phương thức trên NSArray – codelark

+4

@Moshe Nó trả về một đối tượng NSArray (không thay đổi) mới, và không thay đổi mảng ban đầu, vì vậy nó hoạt động tốt trên các đối tượng NSArray. – grahamparks

2

Dưới đây là một đối xứng & cách đơn giản bằng cách chỉ bắt đầu với một mảng trống:

NSArray* newArray = @[]; 
newArray = [newArray arrayByAddingObjectsFromArray:firstArray]; 
newArray = [newArray arrayByAddingObjectsFromArray:secondArray]; 
Các vấn đề liên quan