L'approche la plus simple consiste à fournir un sélecteur de tri ( documentation d' Apple pour plus de détails)
Objectif c
sortedArray = [anArray sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)];
Rapide
let descriptor: NSSortDescriptor = NSSortDescriptor(key: "YourKey", ascending: true, selector: "localizedCaseInsensitiveCompare:")
let sortedResults: NSArray = temparray.sortedArrayUsingDescriptors([descriptor])
Apple propose plusieurs sélecteurs pour le tri alphabétique:
compare:
caseInsensitiveCompare:
localizedCompare:
localizedCaseInsensitiveCompare:
localizedStandardCompare:
Rapide
var students = ["Kofi", "Abena", "Peter", "Kweku", "Akosua"]
students.sort()
print(students)
// Prints "["Abena", "Akosua", "Kofi", "Kweku", "Peter"]"
Référence
Thomas Zoechling
la source
Les autres réponses fournies ici mentionnent l'utilisation de
@selector(localizedCaseInsensitiveCompare:)
Cela fonctionne très bien pour un tableau de NSString, cependant si vous voulez étendre cela à un autre type d'objet et trier ces objets en fonction d'une propriété 'name', vous devriez le faire à la place:Vos objets seront triés en fonction de la propriété de nom de ces objets.
Si vous souhaitez que le tri ne respecte pas la casse, vous devez définir le descripteur comme ceci
la source
name
n'est pas une clé valide. Quelle clé dois-je utiliser pour trier les chaînes par ordre alphabétique avec un NSSortDescriptor?Un moyen plus puissant de trier une liste de NSString pour utiliser des choses comme NSNumericSearch:
Combiné avec SortDescriptor, cela donnerait quelque chose comme:
la source
Utilisez le code ci-dessous pour trier par ordre alphabétique:
Voici le journal de la console:
la source
Une autre méthode simple pour trier un tableau de chaînes consiste à utiliser la
description
propriété NSString de cette façon:la source
Cela a déjà de bonnes réponses pour la plupart des fins, mais j'ajouterai la mienne qui est plus spécifique.
En anglais, normalement lorsque nous alphabétisons, nous ignorons le mot "the" au début d'une phrase. Ainsi, "Les États-Unis" seraient classés sous "U" et non "T".
Cela fait cela pour vous.
Il serait probablement préférable de les classer en catégories.
la source
la source