sort
Vergleichen Sie in dem Abschluss, an den Sie übergeben , die Eigenschaften, nach denen Sie sortieren möchten. So was:
movieArr.sorted { $0.name < $1.name }
oder Folgendes in den Fällen, in denen Sie Fälle umgehen möchten:
movieArr.sorted { $0.name.lowercased() < $1.name.lowercased() }
Nebenbemerkung: Normalerweise beginnen nur Typen mit einem Großbuchstaben. Ich würde empfehlen, name
und date
, nicht Name
und zu verwenden Date
.
Beispiel auf einem Spielplatz:
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
wird in der Reihenfolge sein [movieA, movieB, movieC]
Swift5 Update
channelsArray = channelsArray.sorted { (channel1, channel2) -> Bool in
let channelName1 = channel1.name
let channelName2 = channel2.name
return (channelName1.localizedCaseInsensitiveCompare(channelName2) == .orderedAscending)
.lowercaseString
wird dieses Problem lösen.sorted
in Swift 3 ist: D.Mit Swift 3 können Sie eine der folgenden Möglichkeiten wählen, um Ihr Problem zu lösen.
1. Verwenden
sorted(by:)
mit einerMovie
Klasse, die nicht demComparable
Protokoll entsprichtWenn Ihre
Movie
Klasse nicht demComparable
Protokoll entspricht, müssen Sie in Ihrem Abschluss die Eigenschaft angeben, für die Sie die Array-sorted(by:)
Methode verwenden möchten .Movie
Klassendeklaration:Verwendung:
2. Verwenden
sorted(by:)
mit einerMovie
Klasse, die demComparable
Protokoll entsprichtWenn Sie Ihre
Movie
Klasse jedoch an dasComparable
Protokoll anpassen , können Sie einen sehr präzisen Code haben, wenn Sie die Array-sorted(by:)
Methode verwenden möchten .Movie
Klassendeklaration:Verwendung:
3. Verwenden
sorted()
mit einerMovie
Klasse, die demComparable
Protokoll entsprichtIndem Sie Ihre
Movie
Klasse an dasComparable
Protokoll anpassen , können Siesorted()
alternativ die Array- Methode verwendensorted(by:)
.Movie
Klassendeklaration:Verwendung:
quelle
movies.sorted(by: <)
undmovies.sorted()
)?sorted(by:)
undsorted()
sind zwei verschiedene Methoden. Sie könnenarray.sorted()
als Alternative für verwendenarray.sorted(by: <)
.sorted(by:)
und dieselbe Klassendefinition habensorted()
?Comparable
Protokoll entsprechen muss."1" "14""28""31""4""42""49"
quelle
Für diejenigen, die Swift 3 verwenden, lautet die entsprechende Methode für die akzeptierte Antwort:
quelle
Sortiertes Array Swift 4.2
quelle
quelle