How do I get first x elements of an NSArray in Cocoa?

Objective CCocoa

Objective C Problem Overview


New to Cocoa, and seem to be missing something.

What is the most elegant/idiomatic way to obtain the first x elements of an NSArray as another NSArray? Obviously I can iterate through them and store them manually, but it seems like there has to be a more standard method of doing this.

I was expecting there to be an -arrayWithObjectsInRange: or something similar, but don't see anything...

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

NSArray* smallArray = // fill in the blank     

// smallArray contains first 10 items from largeArray

Thanks!

Objective C Solutions


Solution 1 - Objective C

You can use subarrayWithRange:.

NSArray *smallArray = [largeArray subarrayWithRange:NSMakeRange(0, MIN(10, largeArray.count))];//MIN() used because array must be larger than or equal to range size, else exception will be thrown

Solution 2 - Objective C

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

Solution 3 - Objective C

In Swift 3 you can use this:

let smallArray = largeArray.prefix(10)

Solution 4 - Objective C

2nd parameter is number of array items to include in the range, not the 'to' index

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionCocoaNewbView Question on Stackoverflow
Solution 1 - Objective CmipadiView Answer on Stackoverflow
Solution 2 - Objective Ckas-kadView Answer on Stackoverflow
Solution 3 - Objective CMathias ClaassenView Answer on Stackoverflow
Solution 4 - Objective CMark JenkinsView Answer on Stackoverflow