67

Is there any convenient way to take an array/set of objects and create a new array/set containing some property of each item in the first array?

For example, an array contains Car objects. I need an array of licensePlates, where each car has an NSObject car.licensePlate.

Currently I just iterate through the first array adding objects to my mutable results array, but was wondering if there is an instantiation method that exists for this (checked the docs for NSArray).

1 Answer 1

119

This will return an array containing the value of licensePlate from each item in the myCars array:

NSArray *licensePlates = [myCars valueForKeyPath:@"licensePlate"]

If you want only unique items (for example), you can do something like this:

NSArray *licensePlates = [myCars valueForKeyPath:@"@distinctUnionOfObjects.licensePlate"];

For more possibilities, see the Collection Operators documentation in the Key-Value Coding Programming Guide.

Sign up to request clarification or add additional context in comments.

2 Comments

I think the operator @unionOfObjects should be used in the first instance.
Great answer! Looks like the link to docs is not working anymore. Here is the right link : developer.apple.com/library/content/documentation/Cocoa/…

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.