【发布时间】:2019-05-03 11:35:25
【问题描述】:
我有一个数组,SetDataList,其中填充了以下信息:
["2019-04-30 Set 1: 8 Reps 55kg", "2019-05-02 Set 1: 5 Reps 70kg", "2019-05-02 Set 2: 4 Reps 70kg", "2019-05-02 Set 3: 2 Reps 75kg"]
我目前正在使用下面的代码对数组进行排序,以便将集合 1、2 和 3 分组并在上面的数组中显示。
SetDataList.sort(by: {$0 < $1})
但是,我还想按日期降序对数组进行排序。我之前使用以下代码执行过此操作,但这种方法会打乱设置顺序。
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"
let ordered = SetDataList.sorted { string1, string2 in
guard let date1 = dateFormatter.date(from: string1), let date2 = dateFormatter.date(from: string2) else { return false }
return date1 < date2
}
如何实现多种排序?谢谢
【问题讨论】:
-
先将字符串解析成对象的数组,然后使用Sort array of objects with multiple criteria
-
请考虑
guard表达式失败并始终返回false。日期格式化程序无关紧要。该数组按前导日期字符串表示排序。 -
鉴于您之前的问题,看起来这个字符串数组是您自己创建的,所以我认为您应该专注于处理对象,而不是像@MartinR 建议的那样使用它,这样您就可以避免出现问题都这样。