Dengan Swift 3, Anda dapat memilih salah satu cara berikut untuk menyelesaikan masalah Anda.
1. Menggunakan sorted(by:)dengan Moviekelas yang tidak sesuai dengan Comparableprotokol
Jika Moviekelas Anda tidak sesuai dengan Comparableprotokol, 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 Moviekelas yang sesuai dengan Comparableprotokol
Namun, dengan membuat Moviekelas Anda sesuai dengan Comparableprotokol, 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 Moviekelas yang sesuai dengan Comparableprotokol
Dengan membuat Moviekelas Anda sesuai dengan Comparableprotokol, 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)