如何在Swift中对从最旧到最新的时间/日期数组进行排序?

时间:2015-08-28 21:44:26

标签: ios swift nsdate

我有 calendar.administrations.where(user_id: @user.id).first 个日期/时间。 (" 8/28/15,下午2:38")我试图从最新到最旧的日期/时间订购它。什么是最简单最有效的方式?

我正在考虑进行 <%= calendar.administrations.where(user_id: @user.id).first.role %> 循环并检查array是否在当前项之前或之后进行检查。但我确信有更好,更有效的方式。

如何对从最旧到最新的时间/日期数组进行排序? (如果你需要我的代码,我可以发布它。

2 个答案:

答案 0 :(得分:3)

Array有一个内置方法sort,它允许您提供一个闭包来对其中的对象进行排序。假设您的变量名为dates,您可以像这样对其中的NSDate进行排序:

dates.sort { (a, b) -> Bool in
    a.earlierDate(b) == a
}

sort方法会一再要求您比较两个日期,询问您首先要订购哪个日期。您可以使用NSDate的{​​{1}}方法来查找首先出现的日期。

注意:如果您的数组实际上由日期字符串而不是earlierDate组成,我建议您先将它们转换为NSDate

答案 1 :(得分:0)

您可以使用此方法

NSArray *sortedArray;
    sortedArray = [unsorted_array sortedArrayUsingComparator:^NSComparisonResult(NSDate a, NSDate b) {
        return [a compare:b];
    }];