2012-03-27 5 views
58

C'è un modo conveniente per prendere un array/set di oggetti e creare un nuovo array/set contenente alcune proprietà di ciascun elemento nel primo array?Creazione di un array da proprietà di oggetti in un altro array

Ad esempio, un array contiene oggetti Car. Ho bisogno di una serie di LicensePlates, in cui ogni auto ha un car.licensePlate NSObject.

Attualmente eseguo semplicemente il primo array aggiungendo oggetti al mio array di risultati mutabili, ma mi chiedevo se esiste un metodo di creazione di istanze che esiste per questo (controllato i documenti per NSArray).

risposta

113

Ciò restituirà una matrice contenente il valore di licensePlate da ciascun elemento della myCars matrice:

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

se desideri solo oggetti unici (per esempio), si può fare qualcosa di simile:

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

Per ulteriori possibilità, consultare la documentazione Collection Operators nello Key-Value Coding Programming Guide.

+0

Penso che l'operatore @unionOfObjects debba essere utilizzato in prima istanza. – singingAtom

+1

Ottima risposta! Sembra che il collegamento a documenti non funzioni più. Ecco il link giusto: https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/KeyValueCoding/CollectionOperators.html – prad