![](/img/trans.png)
[英]Filtering a NSArray containing objects with a NSDate field with NSPredicate
[英]Sorting NSArray containing NSDate objects
我有一個包含NSDate
對象的數組。 使用Objective-C,我可以使用以下方法對此數組進行排序:
NSArray *array = [unsortedArray sortedArrayUsingSelector:@selector(compare:)]
我想知道是否有Swift等同於做同樣的事情。 對Swift來說相對較新,黑客入侵。
如果你使用Swift數組。
let datesArray = [ NSDate(), NSDate(timeIntervalSinceNow: 60), NSDate(timeIntervalSinceNow: -60) ]
let sorter: (NSDate, NSDate) -> Bool = { $0.compare($1) == .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"]
在Swift中使用本機Array
類型。 如果您與ObjC的舊代碼連接,請使用以下代碼:
let array = unsortedArray.sortedArrayUsingSelector("compare:")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.