NSDictionary clés triées par valeur numérique

- Je stocker les noms des touches et notes de valeurs dans un NSDictionary pour l'épargne NSUserDefaults. Je veux récupérer les clés triés par score, mais je n'arrive pas à les trier numériquement, que par chaîne. La liste des scores 100, 50, 300, 200, 500, par exemple, me donne 100, 200, 300, 50, 500.

Est-ce possible ou dois-je aller à ce sujet différemment?

NSString *defaultNames[] = {@"Matt", @"Terry",@"Jessica",@"Sean",nil};
NSNumber *defaultScores[] = {@"600", @"500",@"100",@"50", nil};

NSDictionary *newScoreDict =  [NSDictionary dictionaryWithObjects:(id *)defaultScores forKeys:(id *)defaultNames count:7];

NSArray *currScores = [scoreDict keysSortedByValueUsingSelector:@selector(compare:)];
  • developer.apple.com/mac/library/DOCUMENTATION/Cocoa/Reference/...
  • J'ai trouvé ça aussi, mais comment exactement qui aident avec keysSortedByValueUsingSelector:@selector(comparer:)
  • Pourquoi êtes-vous de mettre les chaînes dans votre tableau de NSNumber pointeurs?
  • c'est une excellente question... hehe, je dois avoir manqué que
  • Si vous ne voyez pas comment convertir des chaînes en nombres peuvent vous aider à comparer leurs valeurs numériquement alors je ne sais pas quoi vous dire.
  • Je veux qu'il vienne du dictionnaire classées dans l'ordre croissant des clés et des valeurs de la ligne, il ne m'aide pas à comparer les elle après le fait.
  • Euh, je suis en train d'apprendre, Si je suis absent quelque chose d'évident, vous pourriez juste le dire au lieu d'être un idiot
  • Pourquoi êtes-vous en disant: il y a 7 objets dans les tableaux quand il y a vraiment 4?
  • +1 pour cette très utile. Je l'ai utilisé dans un contexte différent.

InformationsquelleAutor Matt | 2009-10-25