Je me suis penché sur cette question pendant des heures et je n'arrive pas à trouver le problème. J'ai un tableau de scores que je sauvegarde à la fin d'une partie dans un modèle de données de base. Après la sauvegarde, lorsque je retourne dans le contrôleur de vue des meilleurs scores, je charge les scores à partir des données de base et je trie le tableau en utilisant la fonction suivante où le tableau des scores est un NSMutableArray avec mes 10 meilleurs scores
[self.scoresArray sortUsingFunction:firstNumSort context:@selector(totalScore)];
//function to sort high scores in the array
NSInteger firstNumSort(id str1, id str2, void *context) {
static int counter = 0;
NSLog(@"counter = %d", counter);
counter++;
//NSLog(@"should be sorting");
int num1 = [str1 totalScore];
int num2 = [str2 totalScore];
if (num1 > num2) {
NSLog(@"%@ is greater than %@", num1, num2);
return NSOrderedAscending;
}
else if (num1 < num2){
NSLog(@"%@ is less than %@", num1, num2);
return NSOrderedDescending;
}
else {
NSLog(@"%@ is the same as %@", num1, num2);
return NSOrderedSame;
}
}
Cela place toujours la dernière entrée de score en haut de la liste, quelle que soit sa valeur ? Ce qui est étrange, c'est que lorsque je redémarre mon application, la même fonction place tous les scores dans l'ordre décroissant correct, ce qui est ce que je veux, mais évidemment je ne veux pas que l'utilisateur doive redémarrer l'application pour voir les scores affichés dans l'ordre correct. Quelqu'un peut-il m'éclairer sur ce qui se passe ?
Merci beaucoup.
Jules