获取具有最近日期的对象

Get the object with the most recent date

我有一个类型为 Thing:

的对象数组
class Thing: NSObject {
    var data: String
    var type: String
   var created: NSDate
}

这些东西有一个名为 created 的 NSDate 属性。我的目标是编写一个函数来读取数组中每个事物的 created 属性 和 returns 具有最新日期的事物。该函数如下所示:

public func getLastSwipe(list: Array<Thing>) -> Thing {
    return someThing
}

您可以对数组进行排序,然后找到 first/last 元素。例如...

let objects: [Thing] = ... //Set the array
let mostResent = array.sorted { (firstThing, secondThing) -> Bool in
    firstThing.created.timeIntervalSince1970 > secondThing.created.timeIntervalSince1970
}.first

这会将 return 最反感的 Thing 作为 Optional(因为不能保证数组不为空。如果您知道数组不为空,那么您可以在该行结束时使用 .first!

如果需要,您可以使用 reduce。这将找到具有最高时间戳的对象。

var mostRecent = list.reduce(list[0], { [=10=].created.timeIntervalSince1970 > .created.timeIntervalSince1970 ? [=10=] :  } )

如果您的日期不全是过去的日期,您还必须与当前日期进行比较以确定截止日期。如果您的日期都在未来,您需要将 > 切换为 < 以查找下一个未来日期(最小时间戳)。

另一种方法是使用 Swift 的 .max,像这样

let mostRecentDate = dates.max(by: {
   [=10=].timeIntervalSinceReferenceDate < .timeIntervalSinceReferenceDate
})

这是我找到的最高效的解决方案。

Returns 如果序列不为空,则为序列的最近日期;否则,无。