Сортировка данных в tableView по дате и времени

у меня есть структура TaskModel, в которой есть свойство date: String? (тут хранится и дата и время с datePicker). Каждый экземпляр структуры хранится в массиве tasksArray, данные из этого массива попадают в tableView. Также данные в массиве хранятся следующим образом:

private var tasksArray: [TaskModel] {
       
       get {
           guard let encodedData = defaults.array(forKey: key) as? [Data] else {
                   return []
               }
           
               return encodedData.map { try! JSONDecoder().decode(TaskModel.self, from: $0)
                   
               }
           
       }

       set {
           
           let data = newValue.map { try? JSONEncoder().encode($0) }
               defaults.set(data, forKey: key)
   }

   }  

Подскажите, как можно отсортировать данные в таблице по дате?


Ответы (1 шт):

Автор решения: Oleg Soloviev

Вы можете сразу отсортировать массив tasksArray в get. Добавьте в продолжение функции map sorted (разверните optional date, если нужно):

return encodedData.map { try! JSONDecoder().decode(TaskModel.self, from: $0) }.sorted(by: {$0.date < $1.date})
→ Ссылка