Sortir Array Dalam Swift
Untuk Swifty
Orang di bawah ini adalah teknik yang sangat bersih untuk mencapai tujuan di atas secara global. Mari kita memiliki contoh kelas khusus User
yang memiliki beberapa atribut.
class User: NSObject {
var id: String?
var name: String?
var email: String?
var createdDate: Date?
}
Sekarang kita memiliki array yang perlu kita sortir berdasarkan createdDate
naik dan / atau turun. Jadi mari kita tambahkan fungsi untuk perbandingan tanggal.
class User: NSObject {
var id: String?
var name: String?
var email: String?
var createdDate: Date?
func checkForOrder(_ otherUser: User, _ order: ComparisonResult) -> Bool {
if let myCreatedDate = self.createdDate, let othersCreatedDate = otherUser.createdDate {
//This line will compare both date with the order that has been passed.
return myCreatedDate.compare(othersCreatedDate) == order
}
return false
}
}
Sekarang mari kita memiliki extension
dari Array
untuk User
. Dengan kata sederhana, mari kita tambahkan beberapa metode hanya untuk Array yang hanya memiliki User
objek di dalamnya.
extension Array where Element: User {
//This method only takes an order type. i.e ComparisonResult.orderedAscending
func sortUserByDate(_ order: ComparisonResult) -> [User] {
let sortedArray = self.sorted { (user1, user2) -> Bool in
return user1.checkForOrder(user2, order)
}
return sortedArray
}
}
Penggunaan untuk Ascending Order
let sortedArray = someArray.sortUserByDate(.orderedAscending)
Penggunaan untuk Pesanan Menurun
let sortedArray = someArray.sortUserByDate(.orderedAscending)
Penggunaan untuk Pesanan yang Sama
let sortedArray = someArray.sortUserByDate(.orderedSame)
Metode di atas extension
hanya akan dapat diakses jika Array
bertipe
[User]
||Array<User>