web-dev-qa-db-fra.com

Comment puis-je obtenir toutes les valeurs d'une clé spécifique de chaque NSDictionary dans un NSArray?

J'ai un tableau qui contient des objets de dictionnaire. Dans chaque dictionnaire, la clé est commune. Maintenant, je veux obtenir toutes les valeurs de cette clé. J'ai obtenu ces valeurs avec l'itération, mais je cherche un moyen simple ou une méthode par défaut qui fait ce travail.

Pouvez-vous m'aider à obtenir une méthode par défaut qui remplit cette fonction? Merci.

La structure des données est comme ceci:

<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>

Je fais ça maintenant:

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];

Cela me donne une réponse correcte. Mais je ne veux pas faire cette itération. Je veux une méthode qui me renverra toutes les valeurs de la clé "Match" de tous les index du tableau et les enregistrera dans un autre tableau à la fois. le tableau nouvellement créé n'aura que les valeurs de la clé Match de tous les index du tableau.

Est-ce possible??

24
hgpl

Il y a une astuce intéressante avec le codage valeur-clé qui le fait:

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

Voici un exemple en action:

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"];

Après cette dernière ligne, aWordArray contiendra les mots dans le même ordre que dans le tableau d'origine des dictionnaires.

67
Monolo