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

时间:2016-04-22 17:41:56

标签: arrays swift sorting swift2 nsdate

Swift 2中是否有任何函数可以按升序或降序对Array的{​​{1}}进行排序而不编写自己的排序算法?

我已尝试过以下操作,但遗憾的是,NSDate无法用于比较两个NSDate对象。

>

2 个答案:

答案 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()