2011-01-17 6 views
0

J'ai essayé de faire fonctionner cela depuis un certain temps maintenant et je suis un peu à court d'options. J'essaie d'utiliser "allKeysForObject" pour sélectionner toutes les clés pour un certain objet.Aide avec NSDictionary allKeysForObject: sans succès

Ceci est un code de test pour essayer de sélectionner les clés pour un résultat. Les objets du dictionnaire sont supposés être des nombres mais quand je veux l'afficher, j'utilise% @ pour obtenir le résultat, ce qui pour moi indique que ce n'est pas un nombre.

J'ai joué pour essayer de sélectionner la clé avec int, NSString (comme dans l'exemple de code) et utilisé le tableau allObject pour faire la sélection, mais n'ont pas réussi. Comme je suis très nouveau à ce sujet, je suis à court d'option et je dois demander de l'aide.

NSDictionary *playerResultInTheGame = [readCurrentGameDataFunction finalResultForCurrentGame]; 


NSLog(@"playerResultInTheGame: %@", playerResultInTheGame); 

NSArray *allPlayers = [playerResultInTheGame allKeys]; 
NSArray *allObjects = [playerResultInTheGame allValues]; 

NSLog(@"allObjects: %@", allObjects); 

NSMutableArray *myObjectsArray = [[NSMutableArray alloc] init]; 

allObjects = [allObjects sortedArrayUsingSelector:@selector(compare:)]; 
NSLog(@"allObjects: %@", allObjects); 


NSArray *xxxxx = [playerResultInTheGame allKeysForObject:@"1"]; 
NSLog(@"xxxxx: %@", xxxxx); 

Le résultat que je reçois est:

2011-01-17 20: 50: 34,554 XX [11203: 207] playerResultInTheGame: {
Barnspelare = 2;
Vuxenspelare = 1;

} 17/01/2011 20: 50: 34,554 XX [11203]: 207 allObjects: (
2,
) 2011-01-17 20: 50: 34,555 XX [11203: 207 ] allObjects: (
1, 2

)
langue actuelle: auto; actuellement objective-c
17/01/2011 20: 51: 50,086 XX [11203: 207] xxxxx: (
)
2011-01-17 20: 52: 24.523 XX [11203: 207] AllPlayers: (
Barnspelare,
Vuxenspelare
)

+0

On ne sait pas quel est votre objectif. Essayez-vous de stocker une liste de joueurs? Il semble que vous utilisiez un dictionnaire pour faire le travail d'un tableau. –

+0

J'essaie de sélectionner le résultat pour un joueur et ensuite afficher le nom + résultat après la fin du jeu. – PeterK

+0

Pourquoi ne pas imprimer les allkeys aussi? –

Répondre

1

Ok, donc si vous avez une liste de joueurs, comme les clés, et leurs scores comme des objets, pour obtenir cette liste imprimée du tout, vous pouvez le faire:

#import <Foundation/Foundation.h> 

int main (int argc, const char * argv[]) { 
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; 
    NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:@"1", @"player1", @"2", @"Player2", @"3", @"player3", nil]; 


    NSLog(@"%@", [dict objectForKey:@"player1"]); 

    NSString *key; 
    for (key in dict) { 
     NSLog(@"Player: %@, Result: %@", key, [dict objectForKey:key]); 
    } 

    [pool drain]; 
    return 0; 
} 
0

Les clés sont probablement des nombres plutôt que des chaînes. L'utilisation d'un int est définitivement faux, car les collections Cocoa ne peuvent pas stocker int s. Vous devez utiliser NSNumber. Donc, utilisez [playerResultInTheGame allKeysForObject:[NSNumber numberWithInt:1]].

Questions connexes