如何在 Swift 中对 NSDate 进行排序

Posted

技术标签:

【中文标题】如何在 Swift 中对 NSDate 进行排序【英文标题】:How to sort a NSDate in Swift 【发布时间】:2015-06-29 18:46:31 【问题描述】:

我有一个这样的数组:

selectedMarks : [StatDetails] = [
  StatDetails(dateRanges: [2015-05-29 09:30:00 +0000, 2015-05-29 10:30:00 +0000], hours: 1),
  StatDetails(dateRanges: [2015-06-16 08:00:00 +0000, 2015-06-16 09:00:00 +0000], hours: 1),
  StatDetails(dateRanges: [2015-06-10 15:00:00 +0000, 2015-06-10 16:00:00 +0000], hours: 1)]

如您所见, selectedMarks 是一个包含 2 个参数的“StatDetails”数组:

1: dateRanges": NSDate 数组

2:小时:一个整数

我试图弄清楚如何按 dateRanges 数组的第一个元素对这个 StatDetails 数组进行排序。

我试过了,但没有成功:

selectedMarks.sortInPlace( $0.dateRanges < $1.dateRanges )

有什么帮助吗??

【问题讨论】:

如果你想按日期范围数组中的第一个元素排序,你需要给它一个像这样的索引: $0.dateRange[0] &lt; $1.dateRanges[0] @fqdn 我之前尝试过,但出现编译错误Cannot invoke 'sort' with an argument list of type '((_, _) -&gt; _)' ***.com/questions/26577496/… 的可能重复项:您必须将日期与 compare() 进行比较,或者为 NSDate 实现 Comparable 协议。 【参考方案1】:

这就是我的方法,感谢您的帮助!

selectedMarks.sortInPlace( $0.dateRanges[0].compare($1.dateRanges[0]) == NSComparisonResult.OrderedAscending )

【讨论】:

【参考方案2】:

我可以按如下排序。

selectedMarks.sortInPlace $0.dateRanges.timeIntervalSince1970 < $1.dateRanges.timeIntervalSince1970 

【讨论】:

以上是关于如何在 Swift 中对 NSDate 进行排序的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Swift 5 中对数组的数组进行排序 [关闭]

如何根据添加到画廊的日期在 Swift 中对照片进行排序

如何在swift 4中对数组中的JSON数据进行排序

如何在Swift 5中对[int:String]的字典进行排序[重复]

在 Swift 中对协议数组进行排序?

swift 中对Null字段的处理