objective-c nsarray nsdictionary key-value-coding

objective c - ¿Cómo puedo obtener todos los valores para una clave específica de cada NSDictionary en una NSArray?



objective-c key-value-coding (1)

Hay un buen truco con la codificación clave-valor que lo hace:

NSArray *matches = [myArray valueForKey: @"Match"];

Aquí hay un ejemplo en acción:

NSArray *anArray = @[ @{@"aWord" : @"I"}, @{@"aWord" : @"have"}, @{@"aWord" : @"an"}, @{@"aWord" : @"array"}, @{@"aWord" : @"which"}, @{@"aWord" : @"contains"}, @{@"aWord" : @"dictionary"}, @{@"aWord" : @"objects."}, @{@"aWord" : @"Etc."}, ]; NSArray *aWordArray = [anArray valueForKey:@"aWord"];

Después de esta última línea, aWordArray contendrá las palabras en el mismo orden que en la matriz original de diccionarios.

Esta pregunta ya tiene una respuesta aquí:

Tengo una matriz que contiene objetos de diccionario. En cada diccionario las claves son comunes. Ahora quiero obtener todos los valores de esa clave. Tengo estos valores con iteración, pero estoy buscando una forma directa o un método predeterminado que haga este trabajo.

¿Puede ayudarme, por favor, a obtener un método predeterminado que sirva para este propósito? Gracias.

La estructura de datos es así:

<array> <dict> <key>Match</key> <string>Football</string> <key>Stadium</key> <string>XXXXX</string> </dict> <dict> <key>Match</key> <string>HOCKY</string> <key>Stadium</key> <string>XXXXX</string> </dict> </array>

Estoy haciendo esto ahora:

NSMutableArray * matches = [[NSMutableArray alloc] init]; for (int i = 0; i< myArray.count; i++){ [matches insertObject:[[myArray objectAtIndex:i] objectForKey:@"Match"] atIndex:i]; } [matchDataArray addObjectsFromArray:matches];

Me da la respuesta correcta. Pero no quiero hacer esta iteración. Quiero un método que me devuelva todos los valores de la clave "Coincidencia" de todos los índices de la matriz y que se guarde en otra matriz a la vez. la matriz recién creada tendrá solo los valores de la clave de coincidencia de todos los índices de la matriz.

¿¿Es posible??