2012-03-27 12 views
58

¿Hay alguna forma conveniente de tomar una matriz/conjunto de objetos y crear una nueva matriz/conjunto que contenga alguna propiedad de cada elemento en la primera matriz?Crear una matriz a partir de propiedades de objetos en otra matriz

Por ejemplo, una matriz contiene objetos Car. Necesito una serie de LicensePlates, donde cada coche tiene un NSObject car.licensePlate.

Actualmente solo recorro la primera matriz agregando objetos a mi matriz de resultados mutables, pero me preguntaba si existe un método de creación de instancias para esto (verificó los documentos para NSArray).

Respuesta

113

Esto devolverá una matriz que contiene el valor de licensePlate de cada elemento de la myCars matriz:

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

si desea que sólo artículos únicos (por ejemplo), puede hacer algo como esto:

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

Para obtener más posibilidades, consulte la documentación Collection Operators en el Key-Value Coding Programming Guide.

+0

Creo que el operador @unionOfObjects se debe usar en la primera instancia. – singingAtom

+1

¡Excelente respuesta! Parece que el enlace a documentos ya no funciona. Aquí está el enlace correcto: https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/KeyValueCoding/CollectionOperators.html – prad

Cuestiones relacionadas