Swift:基于模型数组日期值创建嵌套分组数组
Swift 按日期分组并排序数组元素
核心实现:用Dictionary(grouping:by:)自动分组
Swift标准库提供了现成的分组API,完全适配任意数据规模,无需手动编写复杂循环:
// 1. 按date字段分组,生成 [String: [Model]] 类型的字典 let groupedDictionary = Dictionary(grouping: data) { $0.date } // 2. 提取分组结果并按日期降序排序(匹配目标输出的顺序) // 先将日期字符串转为Date类型,确保排序逻辑准确 let dateFormatter = DateFormatter() dateFormatter.dateFormat = "dd.MM.yyyy" let groupedData = groupedDictionary.values.sorted { firstGroup, secondGroup in guard let firstDate = dateFormatter.date(from: firstGroup.first?.date ?? ""), let secondDate = dateFormatter.date(from: secondGroup.first?.date ?? "") else { return false } return firstDate > secondDate }
简化排序方案(日期格式固定时)
如果你的日期格式始终是dd.MM.yyyy且无无效值,可直接对日期字符串做字典序排序,省去Date转换步骤:
let groupedData = groupedDictionary.values.sorted { $0.first?.date ?? "" > $1.first?.date ?? "" }
说明
Dictionary(grouping:by:)会自动遍历数组,将元素按指定key(此处为date)归类,无论数据量大小都能高效处理。- 由于字典本身是无序集合,所以需要额外对分组后的数组按日期排序,确保输出顺序和目标一致。
内容的提问来源于stack exchange,提问作者Kerem Cesme
相关产品推荐
相关产品推荐

