El enfoque más simple es proporcionar un selector de clasificación ( documentación de Apple para más detalles)
C objetivo
sortedArray = [anArray sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)];
Rápido
let descriptor: NSSortDescriptor = NSSortDescriptor(key: "YourKey", ascending: true, selector: "localizedCaseInsensitiveCompare:")
let sortedResults: NSArray = temparray.sortedArrayUsingDescriptors([descriptor])
Apple ofrece varios selectores para la clasificación alfabética:
compare:
caseInsensitiveCompare:
localizedCompare:
localizedCaseInsensitiveCompare:
localizedStandardCompare:
Rápido
var students = ["Kofi", "Abena", "Peter", "Kweku", "Akosua"]
students.sort()
print(students)
// Prints "["Abena", "Akosua", "Kofi", "Kweku", "Peter"]"
Referencia
Las otras respuestas proporcionadas aquí mencionan el uso de
@selector(localizedCaseInsensitiveCompare:)
Esto funciona muy bien para una matriz de NSString, sin embargo, si desea extender esto a otro tipo de objeto y ordenar esos objetos de acuerdo con una propiedad 'nombre', debe hacer esto en su lugar:Sus objetos se ordenarán de acuerdo con la propiedad de nombre de esos objetos.
Si desea que la clasificación no distinga entre mayúsculas y minúsculas, deberá configurar el descriptor de esta manera
fuente
name
no es una clave válida. ¿Qué clave utilizo para ordenar las cadenas alfabéticamente con un NSSortDescriptor?Una forma más poderosa de ordenar una lista de NSString para usar cosas como NSNumericSearch:
Combinado con SortDescriptor, eso daría algo como:
fuente
Use el siguiente código para ordenar en orden alfabético:
A continuación se muestra el registro de la consola:
fuente
Otro método fácil para ordenar una matriz de cadenas consiste en utilizar la
description
propiedad NSString de esta manera:fuente
Esto ya tiene buenas respuestas para la mayoría de los propósitos, pero agregaré la mía, que es más específica.
En inglés, normalmente cuando alfabetizamos, ignoramos la palabra "the" al comienzo de una frase. Entonces "Estados Unidos" se ordenaría bajo "U" y no "T".
Esto hace eso por ti.
Probablemente sería mejor ponerlos en categorías.
fuente
fuente