J'ai un NSFetchRequest
qui obtient des objets à partir de données de base et de les trier en utilisant un trivial NSSortDescriptor
. J'utilise deux différents ceux en fonction de ce que l'utilisateur sélectionne, mais ils sont comme ça:NSSortDescriptor - la commande a-t-elle été modifiée?
NSMutableArray *sortDescriptors = [NSMutableArray array];
NSSortDescriptor *sortDescriptor1 = [NSSortDescriptor sortDescriptorWithKey:@"ownerName" ascending:YES selector:@selector(caseInsensitiveCompare:)];
NSSortDescriptor *sortDescriptor2 = [NSSortDescriptor sortDescriptorWithKey:@"petName" ascending:YES selector:@selector(caseInsensitiveCompare:)];
[sortDescriptors addObject:sortDescriptor1];
[sortDescriptors addObject:sortDescriptor2];
[fetchRequest setSortDescriptors:sortDescriptors];
Tout fonctionne comme prévu sur iOS5 et 5.1, mais quand je teste exactement le même code sur un iOS4 en cours d'exécution iPad. 2.1 (ou le simulateur 4.3) l'ordre de tout le premier descripteur de tri est inversé. Dans cet exemple, les noms des propriétaires sont classés de Z à A, mais les familiers sont correctement ordonnés de A à Z!
Y a-t-il eu un bogue dans les versions antérieures d'iOS qui a provoqué l'erreur du booléen ascending
? Sinon, y a-t-il autre chose que je puisse mal faire?
EDIT: La première clé (ownerName) est utilisée comme section NSFetchedResultsController
. Je ne sais pas si c'est pertinent.
Merci Craig
Obtenez-vous le bon ordre si vous passez 'NO' pour le paramètre' ascending'? – Mundi
Oui. J'ai changé le caractère «ascendant» sur le premier SD à NO, et puis reflète le résultat iOS5. Le deuxième SD était toujours défini sur OUI et les articles de la section étaient ordonnés de la même manière. Bizarre! –