स्विफ्ट 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:)
साथ प्रयोग करनाMovie
Comparable
हालाँकि, अपनी 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()
साथ प्रयोग करनाMovie
Comparable
अपनी 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]
*/