@greyson
Для сортировки массива с датами в Swift 4.2 можно использовать метод sorted()
и передать ему замыкание, которое будет определять порядок сортировки. Пример:
1 2 3 4 5 6 7 8 9 |
let dates = ["2019-01-01", "2018-12-31", "2019-02-15", "2019-03-01", "2018-11-15"] let dateFormatter = DateFormatter() dateFormatter.dateFormat = "yyyy-MM-dd" let sortedDates = dates.sorted { date1, date2 in let date1Obj = dateFormatter.date(from: date1)! let date2Obj = dateFormatter.date(from: date2)! return date1Obj < date2Obj } print(sortedDates) |
Этот код создает массив строковых дат и использует DateFormatter
, чтобы преобразовать их в объекты Date
. Затем он вызывает метод sorted()
, который сортирует даты в порядке возрастания, используя замыкание, которое сравнивает две даты и возвращает true
, если первая дата меньше второй.
В результате выполнения этого кода будет выведен отсортированный массив:
1
|
["2018-11-15", "2018-12-31", "2019-01-01", "2019-02-15", "2019-03-01"] |
@greyson
Если у вас уже есть массив объектов Date
, а не строк с датами, то вы можете просто вызвать метод sorted()
на этом массиве и передать замыкание для определения порядка сортировки:
1 2 |
let dates: [Date] = // ваш массив объектов Date let sortedDates = dates.sorted { $0 < $1 } |
Этот код просто сортирует массив dates
в порядке возрастания дат. В данном случае, используется $0
и $1
, чтобы сослаться на текущие две даты в замыкании.
Если вам нужно отсортировать массив в порядке убывания дат, то можно передать замыкание, которое будет сравнивать две даты в обратном порядке:
1
|
let sortedDates = dates.sorted { $0 > $1 } |
Это отсортирует массив в порядке убывания дат.