Sortir Array Dalam Swift
Untuk SwiftyOrang di bawah ini adalah teknik yang sangat bersih untuk mencapai tujuan di atas secara global. Mari kita memiliki contoh kelas khusus Useryang 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 createdDatenaik 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 extensiondari Arrayuntuk User. Dengan kata sederhana, mari kita tambahkan beberapa metode hanya untuk Array yang hanya memiliki Userobjek 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 extensionhanya akan dapat diakses jika Arraybertipe
[User]||Array<User>