J'ai une liste de chaînes de caractères dans un NSMutableArray
et je veux les trier par ordre alphabétique avant de les afficher dans ma vue tableau.
Comment puis-je faire ça ?
J'ai une liste de chaînes de caractères dans un NSMutableArray
et je veux les trier par ordre alphabétique avant de les afficher dans ma vue tableau.
Comment puis-je faire ça ?
Il y a l'exemple de travail suivant d'Apple, utilisant sortedArrayUsingSelector:
y localizedCaseInsensitiveCompare:
en el Documentation sur les collections :
sortedArray = [anArray sortedArrayUsingSelector:
@selector(localizedCaseInsensitiveCompare:)];
Notez que cela retournera un nouveau tableau trié. Si vous voulez trier votre NSMutableArray
en place, puis utilisez sortUsingSelector:
à la place, comme ça :
[mutableArray sortUsingSelector:@selector(localizedCaseInsensitiveCompare:)];
Voici une réponse actualisée pour Swift :
Le tri peut être effectué en Swift à l'aide de fermetures. Il existe deux méthodes - sort
y sorted
qui facilitent cela.
var unsortedArray = [ "H", "ello", "Wo", "rl", "d"]
var sortedArray = unsortedArray.sorted { $0.localizedCaseInsensitiveCompare($1) == NSComparisonResult.OrderedAscending }
Note : Ici sorted
retournera un tableau trié. Le site unsortedArray
lui-même ne sera pas trié.
Si vous voulez trier unsortedArray
lui-même, utilisez cette
unsortedArray.sort { $0.localizedCaseInsensitiveCompare($1) == NSComparisonResult.OrderedAscending }
Référence :
Ici est la documentation sur les méthodes de tri de Swift.
Docs pour différents String
méthodes de comparaison aquí .
En option :
Au lieu d'utiliser localizedCaseInsensitiveCompare
il est également possible de le faire :
stringArray.sort{ $0.lowercaseString < $1.lowercaseString }
ou même
stringArray.sort{ $0 < $1 }
si vous voulez une comparaison sensible à la casse
Il est facile d'obtenir l'ordre ascendant. Suivez les étapes ci-dessous,
Modèle 1 :
NSSortDescriptor *sortDesc = [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES];
sortedArray=[yourArray sortedArrayUsingDescriptors:@[sortDesc]];
Si vous voulez que le tri soit insensible à la casse, vous devez définir le descripteur de la manière suivante,
Modèle 2 :
NSSortDescriptor * sortDesc = [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES selector:@selector(caseInsensitiveCompare:)];
sortedArray=[yourArray sortedArrayUsingDescriptors:@[sortDesc]];
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.