sorted{ $0.timestamp > $1.timestamp }

在Swift中实现按天展示数据,并且每个日期下的数据按时间降序排序,你可以使用字典来存储按日期分组的数据,并对每个日期下的数据进行排序。下面是一个Swift实现的示例:

示例代码:

import Foundation

// 假设KJHistoryModel包含时间戳和描述
class KJHistoryModel {
    var timestamp: Date
    var description: String
    
    init(timestamp: Date, description: String) {
        self.timestamp = timestamp
        self.description = description
    }
}

// 示例数据
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy/MM/dd HH:mm"

let data = [
    KJHistoryModel(timestamp: dateFormatter.date(from: "2025/01/21 14:00")!, description: "Event 1"),
    KJHistoryModel(timestamp: dateFormatter.date(from: "2025/01/21 16:00")!, description: "Event 2"),
    KJHistoryModel(timestamp: dateFormatter.date(from: "2025/01/20 09:00")!, description: "Event 3"),
    KJHistoryModel(timestamp: dateFormatter.date(from: "2025/01/20 12:00")!, description: "Event 4"),
    KJHistoryModel(timestamp: dateFormatter.date(from: "2025/01/22 10:00")!, description: "Event 5")
]

// 按日期分组
var groupedData: [String: [KJHistoryModel]] = [:]

for item in data {
    let dateKey = dateFormatter.string(from: item.timestamp).prefix(10) // 提取日期部分
    if groupedData[String(dateKey)] == nil {
        groupedData[String(dateKey)] = []
    }
    groupedData[String(dateKey)]?.append(item)
}

// 对每个日期组按时间降序排序
for (dateKey, items) in groupedData {
    groupedData[dateKey] = items.sorted(by: { $0.timestamp > $1.timestamp })
//也可以
   // groupedData[dateKey] = items.sorted{ $0.timestamp > $1.timestamp }

}

// 按日期顺序展示
let sortedDates = groupedData.keys.sorted()

for date in sortedDates {
    print("Date: \(date)")
    for event in groupedData[date]! {
        print("  \(event.timestamp) - \(event.description)")
    }
}

代码解析:

  1. KJHistoryModel:定义了一个模型,包含一个时间戳(timestamp)和一个描述(description)。
  2. 数据初始化:创建了一些示例数据,并使用DateFormatter来解析日期字符串。
  3. 按日期分组:使用一个字典groupedData,将数据按照日期(仅取年月日部分)分组。
  4. 排序:对于每个日期的事件列表,使用sorted(by:)按时间降序排序。
  5. 展示:按日期排序后,依次展示每个日期的数据,并按时间从最新到最旧排序。

输出示例:

Date: 2025/01/20
  2025/01/20 12:00:00 - Event 4
  2025/01/20 09:00:00 - Event 3
Date: 2025/01/21
  2025/01/21 16:00:00 - Event 2
  2025/01/21 14:00:00 - Event 1
Date: 2025/01/22
  2025/01/22 10:00:00 - Event 5

解释:

  • 我们首先通过提取日期的年月日部分,按日期分组数据。
  • 对每个日期组内的数据,根据时间戳进行降序排序。
  • 最后,按照日期从最早到最晚的顺序展示数据,每个日期内的事件按照时间从最新到最旧排序。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容