स्विफ्ट 3 के साथ, आप अपनी समस्या को हल करने के लिए निम्न तरीकों में से एक चुन सकते हैं।
1. sorted(by:)एक ऐसे Movieवर्ग के साथ प्रयोग करना जो Comparableप्रोटोकॉल के अनुरूप नहीं है
यदि आपकी Movieकक्षा Comparableप्रोटोकॉल के अनुरूप नहीं है, तो आपको अपनी संपत्ति को बंद करना होगा, जिस पर आप ऐरे की sorted(by:)विधि का उपयोग करना चाहते हैं ।
Movie वर्ग घोषणा:
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
}
}
उपयोग:
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. प्रोटोकॉल का पालन करने वाले वर्ग के sorted(by:)साथ प्रयोग करनाMovieComparable
हालाँकि, अपनी Movieकक्षा को Comparableप्रोटोकॉल के अनुरूप बनाकर , जब आप ऐरे की sorted(by:)विधि का उपयोग करना चाहते हैं, तो आपके पास एक बहुत संक्षिप्त कोड हो सकता है ।
Movie वर्ग घोषणा:
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
}
}
उपयोग:
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. प्रोटोकॉल का पालन करने वाले वर्ग के sorted()साथ प्रयोग करनाMovieComparable
अपनी Movieकक्षा को Comparableप्रोटोकॉल के अनुरूप बनाकर , आप sorted()विकल्प के रूप में एरे की विधि का उपयोग कर सकते हैं sorted(by:)।
Movie वर्ग घोषणा:
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
}
}
उपयोग:
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]
*/