在Swift中对数组进行排序
对于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 {
return myCreatedDate.compare(othersCreatedDate) == order
}
return false
}
}
现在让我们为“用户”创建一个“数组”的扩展。简单来说,让我们仅为那些只包含“用户”对象的数组添加一些方法。请保留HTML标记,但不要写解释。
extension Array where Element: User {
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)
如果Array
是[User]
|| Array<User>
类型,则上述extension
方法才能访问。