我有一个对象数组,其中有一个类型的成员,Date我正在尝试对整个数组进行排序Date,并且它没有正确排序.这是我正在使用的代码,数组alarms的名称是,成员类型的名称Date是time.
alarms.sort(by: { $0.time.compare($1.time) == .orderedAscending })
Run Code Online (Sandbox Code Playgroud)
每当我对它进行排序它只是无法正常工作,我正在通过在for循环中打印所有值来测试它.
有人可以帮我解决这个问题吗?
Rob*_*Rob 20
这compare是一个NSDate功能.有了Date你可以使用<运营商.例如:
alarms.sort { $0.time < $1.time }
Run Code Online (Sandbox Code Playgroud)
话虽如此,也compare应该有效.我怀疑这里有一些更深层次的问题,也许你的time价值观有不同的日期.您可能只查看时间部分,但在比较Date对象时,它会同时考虑日期和时间.如果您只想查看时间部分,有几种方法可以做到这一点,例如,查看time一天之间的时间间隔和一天的开始时间:
let calendar = Calendar.current
alarms.sort {
let elapsed0 = $0.time.timeIntervalSince(calendar.startOfDay(for: $0.time))
let elapsed1 = $1.time.timeIntervalSince(calendar.startOfDay(for: $1.time))
return elapsed0 < elapsed1
}
Run Code Online (Sandbox Code Playgroud)
有很多方法可以做到这一点,但希望这说明了这个想法.
| 归档时间: |
|
| 查看次数: |
10011 次 |
| 最近记录: |