CocoaNewb
CocoaNewb

Reputation: 543

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

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!

Upvotes: 54

Views: 23150

Answers (4)

mipadi
mipadi

Reputation: 410762

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

Upvotes: 142

Mathias Claassen
Mathias Claassen

Reputation: 557

In Swift 3 you can use this:

let smallArray = largeArray.prefix(10)

Upvotes: 0

kas-kad
kas-kad

Reputation: 3764

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

Upvotes: 22

Mark Jenkins
Mark Jenkins

Reputation: 11

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

Upvotes: 0

Related Questions