在 Swift 中对 NSDate 对象的一维数组进行排序



Swift 2 中是否有任何函数可以按升序或降序对NSDate的一维Array进行排序,而无需编写我自己的排序算法?

我已经尝试了以下内容,但不幸的是>不能用于比较两个 NSDate 对象。

var array = [NSDate]()
array.sort { $0 < $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()

好的,一种方法是这样做的:

public func <(lhs: NSDate, rhs: NSDate) -> Bool {
    return lhs.compare(rhs) == .OrderedAscending
}

然后只需根据需要对日期进行排序:

var array = [NSDate]()
array.sort { $0 < $1 }

最新更新