2016-04-22 87 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() 
相關問題