簡體   English   中英

對包含NSDate對象的NSArray進行排序

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM