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