Swift 3 ile sorununuzu çözmek için aşağıdaki yollardan birini seçebilirsiniz.
1. Protokole uymayan sorted(by:)
bir Movie
sınıfla kullanmaComparable
Sizin ise Movie
sınıf uymuyor Comparable
protokol, kendi kapatma size kullanım Dizisinin istediğiniz ana özelliği belirtmelisiniz sorted(by:)
yöntemle.
Movie
sınıf bildirimi:
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
}
}
Kullanımı:
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 })
// let sortedMovies = movies.sorted { $0.name < $1.name } // also works
print(sortedMovies)
/*
prints: [Avatar, Piranha II: The Spawning, Titanic]
*/
2. Protokole uygun sorted(by:)
bir Movie
sınıfla kullanmaComparable
Ancak, Movie
sınıfınızı Comparable
protokole uygun hale getirerek, Array sorted(by:)
yöntemini kullanmak istediğinizde çok özlü bir koda sahip olabilirsiniz .
Movie
sınıf bildirimi:
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
}
}
Kullanımı:
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 })
// let sortedMovies = movies.sorted { $0 < $1 } // also works
// let sortedMovies = movies.sorted(by: <) // also works
print(sortedMovies)
/*
prints: [Avatar, Piranha II: The Spawning, Titanic]
*/
3. Protokole uygun sorted()
bir Movie
sınıfla kullanmaComparable
Movie
Sınıfınızı Comparable
protokole uygun hale getirerek sorted()
alternatif olarak Array yöntemini kullanabilirsiniz sorted(by:)
.
Movie
sınıf bildirimi:
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
}
}
Kullanımı:
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)
/*
prints: [Avatar, Piranha II: The Spawning, Titanic]
*/