Reputation: 543
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
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
Reputation: 557
In Swift 3 you can use this:
let smallArray = largeArray.prefix(10)
Upvotes: 0
Reputation: 3764
firstNItems = [items subarrayWithRange:NSMakeRange(0, MIN(n, items.count))];
Upvotes: 22
Reputation: 11
2nd parameter is number of array items to include in the range, not the 'to' index
Upvotes: 0