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.
Vous devez vous connecter pour publier un commentaire.
comment sur l'utilisation de keysSortedByValueUsingSelector (NSDictionary)
Semble être ce dont vous avez besoin, conformément à la documentation dans XCode
keysSortedByValueUsingComparator:
Le post mentionnekeysSortedByValueUsingSelector:
, qui est disponible depuis 10.0Je suis toujours confondu avec la ligne précédente ?
Dois-je simplement utiliser
Est le tableau de nombres OK, ou est-il un moyen plus facile ?
Merci Beaucoup...
-comparer: est une chaîne de comparer. Passer d'une méthode différente pour la comparaison, l'e.g:
Dans votre cas particulier, vous pourriez utiliser-intValue à la place.
Pas sûr que ça pourrait l'aider, mais vous pouvez également enregistrer un NSArray dans un plist; contrairement à un NSDictionary (qui renvoie clés pour l'essentiel dans un ordre aléatoire), vous obtenez de retour que vous mettez dans.
Je pense que la façon la plus simple de cette question est à l'aide de comparaison..
essayer cette..
J'ai remarqué que je ne pourrais pas atteindre la valeur avec l'aide de NSNumber objet donc, si vous voulez atteindre la valeur de l'objet que j'ai résolu avec le changement de votre NSNumber scores à NSString et de les convertir en nombre lors de la commande. Vous pouvez l'utiliser comme ci-dessous..
Espère que cela aide..