对包含 NSDate 对象的 NSArray 进行排序
Sorting NSArray containing NSDate objects
我有一个包含 NSDate
个对象的数组。使用 Objective-C,我可以使用以下方法对这个数组进行排序:
NSArray *array = [unsortedArray sortedArrayUsingSelector:@selector(compare:)]
我想知道是否有 Swift 相当于做同样的事情。 Swift 在这里相对较新,通过黑客攻击。
使用本机 Array
输入 Swift。如果您正在与 ObjC 的遗留代码交互,请使用:
let array = unsortedArray.sortedArrayUsingSelector("compare:")
如果你使用Swift数组。
let datesArray = [ NSDate(), NSDate(timeIntervalSinceNow: 60), NSDate(timeIntervalSinceNow: -60) ]
let sorter: (NSDate, NSDate) -> Bool = { [=10=].compare() == .OrderedAscending }
let sortedDatesArray = datesArray.sort(sorter)
您可以让您的 NSDate
符合协议 Comparable
然后您可以像比较数字数据类型一样比较它:
extension NSDate: Comparable {}
public func <(lhs: NSDate, rhs: NSDate) -> Bool {
return lhs.compare(rhs) == .OrderedAscending
}
var dates = [NSDate(),NSDate(timeIntervalSinceNow: -600)] // ["Dec 28, 2015, 2:48 AM", "Dec 28, 2015, 2:38 AM"]
dates.sortInPlace(<)
dates // ["Dec 28, 2015, 2:38 AM", "Dec 28, 2015, 2:48 AM"]
我有一个包含 NSDate
个对象的数组。使用 Objective-C,我可以使用以下方法对这个数组进行排序:
NSArray *array = [unsortedArray sortedArrayUsingSelector:@selector(compare:)]
我想知道是否有 Swift 相当于做同样的事情。 Swift 在这里相对较新,通过黑客攻击。
使用本机 Array
输入 Swift。如果您正在与 ObjC 的遗留代码交互,请使用:
let array = unsortedArray.sortedArrayUsingSelector("compare:")
如果你使用Swift数组。
let datesArray = [ NSDate(), NSDate(timeIntervalSinceNow: 60), NSDate(timeIntervalSinceNow: -60) ]
let sorter: (NSDate, NSDate) -> Bool = { [=10=].compare() == .OrderedAscending }
let sortedDatesArray = datesArray.sort(sorter)
您可以让您的 NSDate
符合协议 Comparable
然后您可以像比较数字数据类型一样比较它:
extension NSDate: Comparable {}
public func <(lhs: NSDate, rhs: NSDate) -> Bool {
return lhs.compare(rhs) == .OrderedAscending
}
var dates = [NSDate(),NSDate(timeIntervalSinceNow: -600)] // ["Dec 28, 2015, 2:48 AM", "Dec 28, 2015, 2:38 AM"]
dates.sortInPlace(<)
dates // ["Dec 28, 2015, 2:38 AM", "Dec 28, 2015, 2:48 AM"]