2010-07-29 39 views
43

Mới đối với Cocoa và dường như thiếu một thứ gì đó.Làm cách nào để nhận được các phần tử x đầu tiên của NSArray trong Cocoa?

Cách thanh lịch/thành ngữ nhất để có được các phần tử x đầu tiên của một NSArray là một số khác NSArray là gì? Rõ ràng tôi có thể lặp qua chúng và lưu trữ chúng theo cách thủ công, nhưng có vẻ như phải có một phương pháp tiêu chuẩn hơn để làm điều này.

tôi đã mong có được một -arrayWithObjectsInRange: hoặc một cái gì đó tương tự, nhưng không thấy bất cứ điều gì ...

NSArray* largeArray...// Contains 50 items... 

NSArray* smallArray = // fill in the blank  

// smallArray contains first 10 items from largeArray 

Cảm ơn!

+0

Đối với bất cứ ai đang cố gắng làm điều tương tự, nhưng bắt đầu với một mảng kích thước không xác định, tôi đã hỏi một câu hỏi rất giống ở đây: http://stackoverflow.com/questions/17928973/how-do-i-get-the-first- x-elements-of-an-unknown-size-nsarray –

Trả lời

120

Bạn có thể sử dụng subarrayWithRange:.

NSArray *smallArray = [largeArray subarrayWithRange:NSMakeRange(0, 10)]; 
+0

Không phải là NSMakeRange (0,9)? –

+12

@SeptiadiAgus: 'NSRange' có định dạng' {starting index, length} ', vì vậy nếu bạn muốn 10 phần tử đầu tiên, đối số thứ hai là' 10'. – mipadi

+8

Hãy ghi nhớ, nếu largeArray không có chương trình x mục sẽ sụp đổ. –

0

tham số thứ 2 là số hạng mục mảng bao gồm trong phạm vi, không phải là 'thành' index

18
firstNItems = [items subarrayWithRange:NSMakeRange(0, MIN(n, items.count))]; 
-1

Trong Swift 3 bạn có thể sử dụng này:

let smallArray = largeArray.prefix(10) 
+0

câu hỏi yêu cầu mục tiêu c – ObjectNameDisplay

Các vấn đề liên quan