No fechamento para o qual você passa sort
, compare as propriedades pelas quais deseja classificar. Como isso:
movieArr.sorted { $0.name < $1.name }
ou o seguinte nos casos em que você deseja ignorar os casos:
movieArr.sorted { $0.name.lowercased() < $1.name.lowercased() }
Nota: Normalmente, apenas os tipos começam com uma letra maiúscula; Eu recomendo usar name
e date
, não Name
e Date
.
Exemplo, em um playground:
class Movie {
let name: String
var date: Int?
init(_ name: String) {
self.name = name
}
}
var movieA = Movie("A")
var movieB = Movie("B")
var movieC = Movie("C")
let movies = [movieB, movieC, movieA]
let sortedMovies = movies.sorted { $0.name < $1.name }
sortedMovies
sortedMovies
estará na ordem [movieA, movieB, movieC]
Atualização Swift5
channelsArray = channelsArray.sorted { (channel1, channel2) -> Bool in
let channelName1 = channel1.name
let channelName2 = channel2.name
return (channelName1.localizedCaseInsensitiveCompare(channelName2) == .orderedAscending)
.lowercaseString
irá resolver este problema.sorted
no Swift 3 novamente: D.Com o Swift 3, você pode escolher uma das seguintes maneiras de resolver seu problema.
1. Usando
sorted(by:)
com umaMovie
classe que não está em conformidade comComparable
protocoloSe sua
Movie
classe não estiver em conformidade com oComparable
protocolo, você deverá especificar no seu fechamento a propriedade na qual deseja usar o Arraysorted(by:)
método .Movie
declaração de classe:Uso:
2. Usando
sorted(by:)
com umaMovie
classe que esteja em conformidade com oComparable
protocoloNo entanto, tornando sua
Movie
classe conforme oComparable
protocolo, você pode ter um código muito conciso quando quiser usar osorted(by:)
método Array .Movie
declaração de classe:Uso:
3. Usando
sorted()
com umaMovie
classe que esteja em conformidade com oComparable
protocoloFazendo sua
Movie
classe estar em conformidade com oComparable
protocolo, você pode usar osorted()
método Array como uma alternativa aosorted(by:)
.Movie
declaração de classe:Uso:
fonte
movies.sorted(by: <)
emovies.sorted()
)?sorted(by:)
esorted()
são dois métodos diferentes. Você pode usararray.sorted()
como uma alternativa paraarray.sorted(by: <)
.sorted(by:)
esorted()
?Comparable
protocolo."1" "14""28""31""4""42""49"
fonte
Para aqueles que usam o Swift 3, o método equivalente para a resposta aceita é:
fonte
Classificação ordenada Swift 4.2
fonte
fonte