如何按日期对我的表格视图中的数组进行排序
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 < $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
【讨论】:
?? 绝对完美,谢谢我的朋友!实现了这一点并立即工作。非常感谢!以上是关于如何按日期对我的表格视图中的数组进行排序的主要内容,如果未能解决你的问题,请参考以下文章