(Swift 3)试图在swift 3中按Date排序一个类对象数组?

Jol*_*oux 11 ios swift3

我有一个对象数组,其中有一个类型的成员,Date我正在尝试对整个数组进行排序Date,并且它没有正确排序.这是我正在使用的代码,数组alarms的名称是,成员类型的名称Datetime.

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)

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