如何在 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] < $1.dateRanges[0]
@fqdn 我之前尝试过,但出现编译错误Cannot invoke 'sort' with an argument list of type '((_, _) -> _)'
***.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 进行排序的主要内容,如果未能解决你的问题,请参考以下文章