根据年份和日期对数组进行排序

Sorting array based on Year and Day

我有这个函数可以根据日期将数组排序为二维数组,但我只想根据日期和年份排序,而不是整个日期(包括小时等)。

    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{[=10=] > } //ReverseSorting
    // add every [Homework] into --> homeworks [[Homework]]
    sortedKeys.forEach { (key) in
        let values = groupedHomeworks[key]
        homeworks.append(values ?? [])
    }

您对项目进行分组的代码是:

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

要仅按年和日分组,您需要更改 element.date! 以生成仅包含这两个值的键,而不是返回整个日期。由于此表达式 returns 是 Date 值,您可以使用 DateFormatter (documentation) 来执行此操作,您可以将日期格式设置为 YY-MM-DD 或类似格式。