在表格视图中显示日期数组,Swift

Posted

技术标签:

【中文标题】在表格视图中显示日期数组,Swift【英文标题】:Display an array of dates in table view, Swift 【发布时间】:2016-12-22 19:55:52 【问题描述】:

搜索SO后,我发现有很多关于在table view controller中分组和显示数据的问题,但没有一个需要按日期排序。

我有一个日期对象数组

let dateObjects = [2016-12-22 16:00:00 +0000, 2016-12-22 16:15:00 +0000, 2016-12-23 16:00:00 +0000, 2016-12-23 16:15:00 +0000, 2016-12-23 16:30:00 +0000, 2016-12-24 16:00:00 +0000]

如何从上面的 dateObjects 创建一个如下所示的数组。

let items = [["4:00 pm", "4:15 pm"], ["4:00 pm", "4:15 pm", "4:30 pm"], ["4:00 pm"]]

我希望将日期分组并显示在如下图所示的表格视图中。请注意,日期和时间按升序排列。

我尝试将字典中的日期分组以意识到字典没有排序,因此我不会得到我想要的顺序。

当我提供一组项目时,此代码有效。 但是如何从日期对象创建类似项目的数组?

let section = ["Thu, 22 Dec", "Fri, 23 Dec", "Sat, 24 Dec"]

let items = [["4:00 pm", "4:15 pm"], ["4:00 pm", "4:15 pm", "4:30 pm"], ["4:00 pm"]]


override func numberOfSections(in tableView: UITableView) -> Int 

    return self.section.count


override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int 

    return self.items[section].count



override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 
    let cell = tableView.dequeueReusableCell(withIdentifier: "LabelCell", for: indexPath)
    cell.textLabel?.text = self.items[indexPath.section][indexPath.row]
    cell.accessoryType = UITableViewCellAccessoryType.disclosureIndicator
    return cell


override func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? 
    return self.section[section]



var valueToPass:String!
override func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath)
    // Get Cell Label
    let indexPath = tableView.indexPathForSelectedRow!
    let currentCell = tableView.cellForRow(at: indexPath)! as UITableViewCell

    valueToPass = currentCell.textLabel?.text
    performSegue(withIdentifier: "TableDetailSegue", sender: self)

【问题讨论】:

如果你想要有序的日期,你需要创建一个 array ,其中分别包含子数组中的日期和时间。数组表示节和节中 的子数组。最合适的方法是自定义结构或类,包括将日期格式化为正确字符串的属性。无论如何不推荐NSDictionary 我不禁注意到您没有显示任何代码。没有任何。零。齐尔奇。纳达。那么,当你根本不展示你在做什么的时候,怎么会有人说你做错了什么? 你的意思是这样的吗? ['Thu 22 Dec' : ['4:00 pm', '4:15 pm'], 'Fri 23 Dec': ['4:00 pm', '4:15 pm', '4: 30 pm'], 'Sat 24 Dec' : ['4:00 pm']] @matt,添加了我的代码。 不知道为什么它被否决.. 【参考方案1】:

我不明白问题是什么。你说:

我希望将日期分组并显示在如下图所示的表格视图中。请注意,日期和时间是按升序排列的。

我尝试将字典中的日期分组以意识到字典没有排序,因此我不会得到我想要的顺序。

好的,但是您展示了您的代码,并且在任何地方都没有字典可以看到!相反,您有一个数组和一个数组数组。看起来它应该工作。果然,我将您的代码复制到一个项目中并运行它,这就是我得到的:

嗯,这看起来很像你说的你想要的。 (除了事物的高度;您没有提供代码的那部分。但它是以正确的顺序正确分组的正确数据。)所以在我看来,您的代码可以提供所需的结果。因此很难看出您的问题是关于什么的。

【讨论】:

很抱歉造成混淆,但真正的问题是我很难创建这样的数组(从日期对象数组)let items = [["4:00 pm", "4:15 pm"], ["4:00 pm", "4:15 pm", "4:30 pm"], ["4:00 pm"]] 如果那是“真正的问题”,那就问问吧。但这不是你问的。我读不懂你的心思!我回答了你提出的问题。显示输入和所需的输出。这就是我对这个问题投反对票的原因——这是一个非常糟糕的问题。

以上是关于在表格视图中显示日期数组,Swift的主要内容,如果未能解决你的问题,请参考以下文章

在 Swift 中使用 Core Data 在表格视图的部分中显示数据

如何在 Swift 3 中制作下拉菜单

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

iOS 7 - 如何在表格视图中显示日期选择器?

当 Swift 中表格中的特定内容发生更改时更改表格的标题

在 Swift 3 中保存表格视图的数据