2012-03-27 90 views
58

是否有任何方便的方法来获取数组/对象集合,并创建一个新的数组/集合,其中包含第一个数组中的每个项目的某些属性?从另一个数组中的对象的属性创建数组

例如,一个数组包含Car对象。我需要一系列licensePlates,其中每辆车都有一个NSObject car.licensePlate。

目前我只是迭代通过添加对象到我的可变结果数组的第一个数组,但想知道是否有一个存在的实例化方法(检查NSArray的文档)。

回答

113

这将从每个项目myCars数组中返回一个包含licensePlate值的数组:

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

如果只想独特的项目(例如),你可以做这样的事情:

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

有关更多可能性,请参阅Key-Value Coding Programming Guide中的Collection Operators文档。

+0

我认为应该在第一个实例中使用operator @unionOfObjects。 – singingAtom 2014-01-31 17:06:17

+1

很棒的回答!看起来像文档的链接不再有效。这是正确的链接:https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/KeyValueCoding/CollectionOperators.html – prad 2017-03-21 06:13:17

相关问题