Swift 2中是否有任何函数可以按升序或降序对Array
的{{1}}进行排序而不编写自己的排序算法?
我已尝试过以下操作,但遗憾的是,NSDate
无法用于比较两个NSDate对象。
>
答案 0 :(得分:1)
好的,这样做的一种方法是:
public func <(lhs: NSDate, rhs: NSDate) -> Bool {
return lhs.compare(rhs) == .OrderedAscending
}
然后只需按您的要求排序日期:
var array = [NSDate]()
array.sort { $0 < $1 }
答案 1 :(得分:1)
您还可以通过声明NSDate
符合Comparable
:
public func ==(lhs: NSDate, rhs: NSDate) -> Bool {
return lhs.isEqualToDate(rhs)
}
public func <(lhs: NSDate, rhs: NSDate) -> Bool {
return lhs.compare(rhs) == .OrderedAscending
}
extension NSDate: Comparable { }
然后您可以在不提供比较器的情况下使用sort()
:
let dates = [NSDate]()
dates.sort()