想象一下,如果有一个像这样的日期数组var dates = [Date1, Date2, Date3].我怎样才能获得这三个日期中最早的一个?我尝试了几种在网上找到的方法,但都没有正常工作.
...并且:如果我有一个带有属性.fireDate的自定义类'提醒'的数组,我将如何做到这一点,这意味着在这种情况下:我如何获得具有最早.fireDate属性的对象?
对不起,我不能发布任何示例代码,我是用手机发布的;-)
Date符合Comparable协议,这意味着您可以将它们与,和<,进行比较.所以你可以在阵列上使用最早找到的.==>min()
let dates = [date1, date2, date3]
if let earliest = dates.min() {
// use earliest date
}
Run Code Online (Sandbox Code Playgroud)
如果你有一个Reminder具有fireDate属性的s 数组,你可以传递一个闭包来min比较你的两个对象来决定顺序:
let reminders = [reminder1, reminder2, reminder3]
if let earliest = reminders.min(by: { $0.fireDate < $1.fireDate }) {
// use earliest reminder
}
Run Code Online (Sandbox Code Playgroud)
或者,您可以Comparable为您的Reminder班级添加一致性,然后您可以min()像以前一样使用:
extension Reminder: Comparable {
static func < (lhs: Reminder, rhs: Reminder) -> Bool {
return lhs.fireDate < rhs.fireDate
}
static func == (lhs: Reminder, rhs: Reminder) -> Bool {
return lhs.fireDate == rhs.fireDate
}
}
let reminders = [reminder1, reminder2, reminder3]
if let earliest = reminders.min() {
// use earliest reminder
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
969 次 |
| 最近记录: |