จัดเรียงแถวลำดับอย่างรวดเร็ว
สำหรับSwifty
คนด้านล่างเป็นเทคนิคที่สะอาดมากเพื่อให้บรรลุเป้าหมายข้างต้นสำหรับทั่วโลก ให้มีคลาสแบบกำหนดเองUser
ซึ่งมีคุณลักษณะบางอย่าง
class User: NSObject {
var id: String?
var name: String?
var email: String?
var createdDate: Date?
}
ตอนนี้เรามีอาร์เรย์ที่เราต้องจัดเรียงบนพื้นฐานของการcreatedDate
ขึ้นและ / หรือจากมากไปน้อย ดังนั้นให้เพิ่มฟังก์ชั่นสำหรับการเปรียบเทียบวันที่
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
}
}
ตอนนี้ให้มีextension
การสำหรับArray
User
ในคำง่ายๆให้เพิ่มวิธีการเฉพาะสำหรับอาเรย์ของเหล่านั้นที่มีUser
วัตถุอยู่ในนั้น
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
}
}
การใช้งานสำหรับการสั่งซื้อน้อยไปมาก
let sortedArray = someArray.sortUserByDate(.orderedAscending)
การใช้งานสำหรับการสั่งซื้อมากไปน้อย
let sortedArray = someArray.sortUserByDate(.orderedAscending)
การใช้งานสำหรับการสั่งซื้อเดียวกัน
let sortedArray = someArray.sortUserByDate(.orderedSame)
วิธีการด้านบนextension
จะสามารถเข้าถึงได้หากArray
เป็นประเภท
[User]
| |Array<User>