在Swift中对NSDate对象的单维数组进行排序
问题描述:
Swift 2中是否有函数按照升序或降序对NSDate
的一维Array
s进行排序,而无需编写自己的排序算法?在Swift中对NSDate对象的单维数组进行排序
我试过以下,但>
不能用来比较两个NSDate的不幸对象。
var array = [NSDate]()
array.sort { $0 < $1 }
答
好吧,这样做的一个办法:
public func <(lhs: NSDate, rhs: NSDate) -> Bool {
return lhs.compare(rhs) == .OrderedAscending
}
然后只是排序日期像你想:
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()
Tthere已经是一个''==操作符'NSObject',没有必要实现它的子类(如'NSDate')。 –
@MartinR,你是对的 – pacification