Air*_*ity 14
你可以NSDate遵循Comparable,如图所示这里
鉴于此,您可以使用它maxElement来查找最大值(即最新值).
import Foundation
extension NSDate: Comparable { }
public func ==(lhs: NSDate, rhs: NSDate) -> Bool {
return lhs.isEqualToDate(rhs)
}
public func <(lhs: NSDate, rhs: NSDate) -> Bool {
return lhs.compare(rhs) == .OrderedAscending
}
let dates = [NSDate(), NSDate()]
let maxDate = maxElement(dates)
Run Code Online (Sandbox Code Playgroud)
请注意,maxElements对于空数组来说很棒,所以你可能希望用以下方法来保护它isEmpty:
let maxDate = dates.isEmpty ? nil : Optional(maxElement(dates))
Run Code Online (Sandbox Code Playgroud)
或者,如果您不想进入延伸路线:
if let fst = dates.first {
let maxDate = dropFirst(dates).reduce(fst) {
$0.laterDate($1)
}
}
Run Code Online (Sandbox Code Playgroud)
或者,返回一个可选的:
let maxDate = dates.reduce(nil) {
(lhs: NSDate?, rhs: NSDate?)->NSDate? in
lhs.flatMap({rhs?.laterDate($0)}) ?? rhs
}
Run Code Online (Sandbox Code Playgroud)
您可以使用reduce:
guard let dates = dates, !dates.isEmpty else { return nil }
dates.reduce(Date.distantPast) { $0 > $1 ? $0 : $1 }
Run Code Online (Sandbox Code Playgroud)
编辑:处理空或 nil 数组
| 归档时间: |
|
| 查看次数: |
3291 次 |
| 最近记录: |