Dengan Swift 3, Anda dapat memilih salah satu cara berikut untuk menyelesaikan masalah Anda.
1. Menggunakan sorted(by:)
dengan Movie
kelas yang tidak sesuai dengan Comparable
protokol
Jika Movie
kelas Anda tidak sesuai dengan Comparable
protokol, Anda harus menentukan dalam closure Anda properti yang ingin Anda gunakan sorted(by:)
metode Array .
Movie
deklarasi kelas:
import Foundation
class Movie: CustomStringConvertible {
let name: String
var date: Date
var description: String { return name }
init(name: String, date: Date = Date()) {
self.name = name
self.date = date
}
}
Pemakaian:
let avatarMovie = Movie(name: "Avatar")
let titanicMovie = Movie(name: "Titanic")
let piranhaMovie = Movie(name: "Piranha II: The Spawning")
let movies = [avatarMovie, titanicMovie, piranhaMovie]
let sortedMovies = movies.sorted(by: { $0.name < $1.name })
print(sortedMovies)
2. Menggunakan sorted(by:)
dengan Movie
kelas yang sesuai dengan Comparable
protokol
Namun, dengan membuat Movie
kelas Anda sesuai dengan Comparable
protokol, Anda dapat memiliki kode yang lebih ringkas saat Anda ingin menggunakan sorted(by:)
metode Array .
Movie
deklarasi kelas:
import Foundation
class Movie: CustomStringConvertible, Comparable {
let name: String
var date: Date
var description: String { return name }
init(name: String, date: Date = Date()) {
self.name = name
self.date = date
}
static func ==(lhs: Movie, rhs: Movie) -> Bool {
return lhs.name == rhs.name
}
static func <(lhs: Movie, rhs: Movie) -> Bool {
return lhs.name < rhs.name
}
}
Pemakaian:
let avatarMovie = Movie(name: "Avatar")
let titanicMovie = Movie(name: "Titanic")
let piranhaMovie = Movie(name: "Piranha II: The Spawning")
let movies = [avatarMovie, titanicMovie, piranhaMovie]
let sortedMovies = movies.sorted(by: { $0 < $1 })
print(sortedMovies)
3. Menggunakan sorted()
dengan Movie
kelas yang sesuai dengan Comparable
protokol
Dengan membuat Movie
kelas Anda sesuai dengan Comparable
protokol, Anda dapat menggunakan sorted()
metode Array sebagai alternatif sorted(by:)
.
Movie
deklarasi kelas:
import Foundation
class Movie: CustomStringConvertible, Comparable {
let name: String
var date: Date
var description: String { return name }
init(name: String, date: Date = Date()) {
self.name = name
self.date = date
}
static func ==(lhs: Movie, rhs: Movie) -> Bool {
return lhs.name == rhs.name
}
static func <(lhs: Movie, rhs: Movie) -> Bool {
return lhs.name < rhs.name
}
}
Pemakaian:
let avatarMovie = Movie(name: "Avatar")
let titanicMovie = Movie(name: "Titanic")
let piranhaMovie = Movie(name: "Piranha II: The Spawning")
let movies = [avatarMovie, titanicMovie, piranhaMovie]
let sortedMovies = movies.sorted()
print(sortedMovies)