【发布时间】:2018-01-06 02:09:54
【问题描述】:
我去年为某人制作了一个应用程序,以便他们可以跟踪客户的收入。那个时候我没有考虑过里面有不同年份的条目会发生什么,果然,2018年来的时候,条目的排序就乱了。我无法弄清楚如何在两年内对我的条目数组进行排序,如果你们中的任何人能帮助我解决这个问题,我将不胜感激。以下是我遇到问题的特定页面的格式和代码。
格式:
有一个 TableView 的结构如下,按照后面提到的标准进行排序。由于 2017 年和 2018 年都有条目(日期的末尾是年份),因此 tableView 使用的数组的排序变得混乱。
日期 |姓名 |钱 |余额
代码:
阵列模型:
struct BalanceUser {
var id = ""
var name = ""
var date = ""
var money = ""
var balance = ""
var status = ""
var year = ""
}
我在数组结构中添加了一个新变量 year,以便我可以使用它进行排序。
当前排序代码:
self.sortedTableArray.sort(by: { (object1, object2) -> Bool in
if object1.date == object2.date {
return object1.id < object2.id
} else {
return object1.date < object2.date
}
})
self.sortedTableArray.sort(by: { (object1, object2) -> Bool in
return object1.year < object2.year
})
目前,使用上面的代码,2018 年的条目显示在 2017 年的条目上方。我想要它以便所有条目都按照以下标准进行排序:
- 如果两个条目的日期相同,则应按id排序
- 如果两个整数的日期不相同,则按日期排序
- 所有条目都应按年份排序,以便 2018 年的条目显示在 2017 年的条目下方。
谢谢!
【问题讨论】:
-
为什么你的日期是一个单独年份的字符串而不是
Date?如果您使用了正确的数据类型,那么您的排序将正常工作 -
这是因为我需要将日期以特定的形式显示给用户。
-
那是
NSDateFormatter的工作;不是你如何存储日期 -
我这样做的原因是因为我需要将日期存储在数据库中,这对我来说是最好的方法。
-
如果您的数据库没有 Date 类型,那么您应该将日期存储为 RFC3339 字符串。然后,您可以在获取数据时轻松地将字符串转换为 Swift
Date
标签: arrays swift sorting swift4