(Swift 3)尝试在Swift 3中按datesorting类对象的数组?

我有一个对象的数组有一个types为Date的成员,我想按Datesorting整个数组,并且它不正确sorting。 这是我使用的代码,数组的名称是alarms ,成员types的名称Datetime

 alarms.sort(by: { $0.time.compare($1.time) == .orderedAscending }) 

每当我sorting它只是不能正常工作,我testing它通过打印for循环中的所有值。

有人可以帮我用这个语法吗?

compare是一个NSDate函数。 使用Date可以使用<运算符。 例如:

 alarms.sort { $0.time < $1.time } 

话虽如此,但compare应该起作用。 我怀疑这里有一些更深层次的问题,也许你的time价值有不同的date。 您可能只查看时间部分,但在比较Date对象时,它会考虑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 } 

有很多方法可以做到这一点,但希望这可以说明这个想法。