A abordagem mais simples é fornecer um seletor de classificação ( documentação da Apple para obter detalhes)
Objetivo-C
sortedArray = [anArray sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)];
Rápido
let descriptor: NSSortDescriptor = NSSortDescriptor(key: "YourKey", ascending: true, selector: "localizedCaseInsensitiveCompare:")
let sortedResults: NSArray = temparray.sortedArrayUsingDescriptors([descriptor])
A Apple fornece vários seletores para classificação 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"]"
Referência
As outras respostas fornecidas aqui mencionam o uso de
@selector(localizedCaseInsensitiveCompare:)
Isso funciona muito bem para uma matriz do NSString; no entanto, se você deseja estender isso para outro tipo de objeto e classificar esses objetos de acordo com a propriedade 'name', faça o seguinte:Seus objetos serão classificados de acordo com a propriedade name desses objetos.
Se você deseja que a classificação não diferencie maiúsculas de minúsculas, defina o descritor como este
fonte
name
não é uma chave válida. Qual chave eu uso para classificar seqüências de caracteres em ordem alfabética com um NSSortDescriptor?Uma maneira mais poderosa de classificar uma lista de NSString para usar coisas como NSNumericSearch:
Combinado com SortDescriptor, isso daria algo como:
fonte
Use o código abaixo para classificar em ordem alfabética:
Abaixo está o log do console:
fonte
Outro método fácil de classificar uma matriz de seqüências consiste em usar a
description
propriedade NSString da seguinte maneira:fonte
Isso já tem boas respostas para a maioria dos propósitos, mas vou adicionar o meu, que é mais específico.
Em inglês, normalmente quando alfabetizamos, ignoramos a palavra "the" no início de uma frase. Portanto, "Os Estados Unidos" seriam ordenados sob "U" e não "T".
Isso faz isso por você.
Provavelmente seria melhor colocá-los em categorias.
fonte
fonte