Сортировка массива по году и дню - PullRequest
0 голосов
/ 17 марта 2020

У меня есть эта функция, которая сортирует массив в двумерный массив по дате, но я хочу отсортировать только по дате и году, а не по всей дате (включая часы и т. Д. c ..).

    func sortHomeworks() {
    /*
     Sorts homeworks by date
     */
    // First it groups them into a dictionary
    let groupedHomeworks = Dictionary(grouping: recivedHomeworks) { (element) -> Date in
        return element.date!
    }
    // Then it sorts the keys in this new dictionary in reverse order
    let sortedKeys = groupedHomeworks.keys.sorted{$0 > $1} //ReverseSorting
    // add every [Homework] into --> homeworks [[Homework]]
    sortedKeys.forEach { (key) in
        let values = groupedHomeworks[key]
        homeworks.append(values ?? [])
    }

1 Ответ

1 голос
/ 18 марта 2020

Ваш код, который группирует ваши элементы:

let groupedHomeworks = Dictionary(grouping: recivedHomeworks)
                         { (element) -> Date in return element.date! }

Чтобы сгруппировать по годам и дням, вам нужно изменить element.date!, чтобы получить ключ, содержащий только эти два значения, а не возвращать всю дату. Поскольку это выражение возвращает значение Date, вы можете использовать DateFormatter ( документация ), чтобы сделать это, вы можете отформатировать дату как YY-MM-DD или что-то подобное.

...