Sắp xếp mảng trong Swift
Đối với Swifty
Người dưới đây là một kỹ thuật rất sạch sẽ để đạt được mục tiêu trên cho toàn cầu. Cho phép có một lớp tùy chỉnh ví dụ trong User
đó có một số thuộc tính.
class User: NSObject {
var id: String?
var name: String?
var email: String?
var createdDate: Date?
}
Bây giờ chúng ta có một mảng mà chúng ta cần sắp xếp trên cơ sở createdDate
tăng dần và / hoặc giảm dần. Vì vậy, hãy thêm một chức năng để so sánh ngày.
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
}
}
Bây giờ cho phép có một extension
số Array
cho User
. Nói một cách đơn giản, chỉ cho phép thêm một số phương thức cho các Array chỉ có User
các đối tượng trong đó.
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
}
}
Cách sử dụng cho thứ tự tăng dần
let sortedArray = someArray.sortUserByDate(.orderedAscending)
Cách sử dụng cho thứ tự giảm dần
let sortedArray = someArray.sortUserByDate(.orderedAscending)
Cách sử dụng cho cùng một đơn hàng
let sortedArray = someArray.sortUserByDate(.orderedSame)
Phương thức trên extension
sẽ chỉ có thể truy cập được nếu Array
thuộc loại
[User]
| |Array<User>