(Swift 3)尝试在Swift 3中按datesorting类对象的数组?
我有一个对象的数组有一个types为Date
的成员,我想按Date
sorting整个数组,并且它不正确sorting。 这是我使用的代码,数组的名称是alarms
,成员types的名称Date
是time
。
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 }
有很多方法可以做到这一点,但希望这可以说明这个想法。