Я хотел бы разделить мою модель на основе параметров даты;
Разделы должны быть;
- Сегодня
- Вчера
- На этой неделе
- На прошлой неделе
- Этот месяц
- Прошлый месяц
- Этот год
- В прошлом году
- Старшая
У меня есть модель пользовательского раздела;
struct NotificationSection {
var date: Date
var notifications: [NotificationViewModel]
}
private var sections = [NotificationSection]()
В настоящее время я разделяю как;
private func firstDayOfMonth(date: Date) -> Date {
let calendar = Calendar.current
let components = calendar.dateComponents([.day, .hour, .month], from: date)
return calendar.date(from: components)!
}
private func sectionData() {
let groups = Dictionary(grouping: self.notifications) { (notification) in
return firstDayOfMonth(date: Date(timeIntervalSince1970: notification.createdAt))
}
self.sections = groups.map { (key, values) in
return NotificationSection.init(date: key, notifications: values)
}
self.sections.sort { (lhs, rhs) in lhs.date > rhs.date }
}
Но я не уверен, как бы я структурировал такие разделы. Буду ли я запускать расширение на Date?
ОБНОВИТЬ
Я использую эту функцию для разделения данных на основе TimeInterval, а не даты.
func getDay(from interval: TimeInterval) -> TimeInterval {
let calender = Calendar.current
let date = Date(timeIntervalSince1970: interval)
if calender.isDateInToday(date) { return 0 }
else if calender.isDateInYesterday(date) { return 1 }
return 2
}