2016-04-22 90 views
0

Swift 2中是否有函数按照升序或降序对NSDate的一维Array s进行排序,而无需编写自己的排序算法?在Swift中对NSDate对象的单维数组进行排序

我试过以下,但>不能用来比较两个NSDate的不幸对象。

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

回答

1

好吧,这样做的一个办法:

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

然后只是排序日期像你想:

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

Tthere已经是一个''==操作符'NSObject',没有必要实现它的子类(如'NSDate')。 –

+0

@MartinR,你是对的 – pacification

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() 
相关问题