获取具有最近日期的对象
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 如果序列不为空,则为序列的最近日期;否则,无。
我有一个类型为 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 如果序列不为空,则为序列的最近日期;否则,无。