Можно ли заказать сгруппированный массив по дате desc или asc?
Я собираю список встреч в дневнике из веб-службы JSON и группирую их по дате. Группировка работает хорошо (я использую дату встречи в дополнительном представлении в виде сбора в качестве заголовка), и все встречи правильно отображаются в соответствующих заголовках, однако даты все не в порядке?
Мой код ниже:
do {
if !self.appointments.isEmpty {
self.appointments.removeAll()
}
if !self.groupedAppointments.isEmpty {
self.groupedAppointments.removeAll()
}
self.appointments = try JSONDecoder().decode([DiaryAppointment].self, from: data!)
let groupedDictionary = Dictionary(grouping: self.appointments) { (appointment) -> String in
return appointment.appointmentDate!
}
let keys = groupedDictionary.keys.sorted()
keys.forEach({
self.groupedAppointments.append(groupedDictionary[$0]!)
})
self.diaryList.reloadData()
completionHandler(success, nil)
} catch let error {
print("This went wrong", error)
completionHandler(success, error)
}
....
func numberOfSections(in collectionView: UICollectionView) -> Int {
return groupedAppointments.count > 0 ? groupedAppointments.count : 1
}
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
if groupedAppointments.count > 0 {
return groupedAppointments[section].count
}
return appointments.count
}
func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView {
if let sectionHeader = collectionView.dequeueReusableSupplementaryView(ofKind: kind, withReuseIdentifier: headerID, for: indexPath) as? SectionHeader {
if !self.groupedAppointments.isEmpty {
sectionHeader.headerLabel.text = self.groupedAppointments[indexPath.section][indexPath.row].appointmentDate
}
return sectionHeader
}
return UICollectionReusableView()
}
Выше приведено правильное количество разделов с правильными датами, отображаемыми в заголовке, и правильными ячейками, отображаемыми в разделах. Но разделы не упорядочены по дате.