如何按日期对我的表格视图中的数组进行排序

Posted

技术标签:

【中文标题】如何按日期对我的表格视图中的数组进行排序【英文标题】:How to sort my array in my tableview by Date 【发布时间】:2020-06-06 03:34:26 【问题描述】:

我正在尝试返回按日期排序的以下单元格。我搜索了很多帖子,但我真的不明白我具体在哪里排序:

let sortedArray = jogs.sorted  $0.jogDate < $1.jogDate 

这是我在 TableViewController 中使用的函数:

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 
        guard let cell = tableView.dequeueReusableCell(withIdentifier: "ToDoCellIdentifier") as? ToDoCell else 
            fatalError("Could not dequeue a cell")
        

        cell.delegate = self

        let jog = jogs[indexPath.row]
        cell.titleLabel?.text = jog.title
        cell.descriptionLabel.text = jog.notes
        cell.dateLabel.text = Jog.jogDateFormatter.string(from: jog.jogDate)

        return cell
    

或者我应该将排序放在 Struct 文件中吗? Class 文件也比 Struct 文件更好吗?

【问题讨论】:

您的数据源是否总是按日期排序?如果是jogs.sort $0.jogDate &lt; $1.jogDate in viewDidLoad 【参考方案1】:

1.按日期对慢跑进行排序

override func viewDidLoad() 
    super.viewDidLoad()\
    jogs.sort  $0.jogDate < $1.jogDate 
    tableView.reloadData()


2。在 UITableViewDelegate / Datasource 实现中使用您的排序数组

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 
    guard let cell = tableView.dequeueReusableCell(withIdentifier: "ToDoCellIdentifier") as? ToDoCell else 
        fatalError("Could not dequeue a cell")
    

    cell.delegate = self

    let jog = sortedArray[indexPath.row] // sorted array
    cell.titleLabel?.text = jog.title
    cell.descriptionLabel.text = jog.notes
    cell.dateLabel.text = Jog.jogDateFormatter.string(from: jog.jogDate)

    return cell

【讨论】:

?? 绝对完美,谢谢我的朋友!实现了这一点并立即工作。非常感谢!

以上是关于如何按日期对我的表格视图中的数组进行排序的主要内容,如果未能解决你的问题,请参考以下文章

如何按保存顺序对表格视图中的数据进行排序?

如何按字母顺序对表格视图单元格进行排序

核心数据按格式化日期排序表格视图

在表格视图中重新排序按日期排序的单元格项目

Swift如何按距离对表格视图进行排序

iOS 按添加日期对文件夹中的文件进行排序