arrays - SWIFT 按日期对数组进行排序
问题描述
我正在尝试在 Swift 中按日期对数组进行排序,但我遇到了这三个错误:
- 无法根据成员“orderedAscending”推断上下文基础
- “任何”类型的值没有成员“比较”
- 将“Any”转换为“AnyObject”或使用“as!” 强制向下转换为更具体的类型以访问成员
那是数组声明:
let array = [[5.5, 1, 2020-11-05 23:00:00 +0000], [8.0, 2, 2020-11-10 23:00:00 +0000], [5.5, 1, 2020-10-27 23:00:00 +0000]]
这就是我编写的用于对数组进行排序的代码:
let sortedArray = array.sorted(by: { (($0[2]).compare($1[2]))! == .orderedAscending })
array = sortedArray
我该如何解决?提前致谢
解决方案
您需要将要排序的元素转换为日期。以下转换将每个子数组的最后一个元素转换为 Date ,如果转换失败,子数组将排在最后
let sorted = array.sorted(by: { ($0.last as? Date ?? Date.distantFuture) < ($1.last as? Date ?? Date.distantPast)})