Swift iOS 映射一个 double 组,将它们转换为日期,然后排序

标签 swift sorting

我有一个自定义对象,它的属性类型为 Double。它使用 Date().timeIntervalSince9170

进行初始化
Class MyObject {
    dateAdded: Double?
}

let myObject1 = MyObject()
myObject1.dateAdded = Date().timeIntervalSince1970

//myObjec2 and more myObjects get initialized and everything added to the array below

var arr = [MyObject]()
arr.append(myObject1)
arr.append(myObject2)
arr.append...

我后来有一个不同的数组,它使用上面数组中的所有对象进行初始化,我想按 dateAdded 排序,所以我映射每个对象

var diffArr = [MyObject]()
diffArr.map { Date(timeIntervalSince1970: $0.dateAdded!)}

映射后如何对 diffArr 进行排序?

我通常会这样做,但 compare 不适用于 Double

diffArr.sort { (d1, d2) -> Bool in
    return d1.dateAdded?.compare(d2.dateAdded) == .orderedDescending
}

我查看了其他问答,但我找不到任何可以使用 Date 一次完成所有操作的东西

最佳答案

DatesComparable,所以你可以直接使用

diffArr.sort { return $0.dateAdded ?? 0.0 < $1.dateAdded ?? 0.0 }

(force-unwrap 是个坏主意。你能改变你的结构,使 dateAdded 属性不是可选的吗?)

在我的代码中,我编写了将 nil 日期值映射到 0 的比较,因此具有 nil 日期的 MyObject 实例将具有非常早的日期。

关于Swift iOS 映射一个 double 组,将它们转换为日期,然后排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52788917/

相关文章:

Python递归将元组列表排序为树结构

java - 使用比较器或合并排序哪个更适合对对象的 arrayList 进行排序?

Postgresql:为项目列表排序 Null+ true 和 false

Swift:计算合并排序中的交换

Jquery 数据表日期时间时刻插件未正确排序

ios - 将对象添加到 NSMutableArray 时遇到崩溃

ios - UITableViewCell 中未出现模糊效果

javascript - 如何在没有手动索引的情况下对 Javascript 中的字母等级进行排序

ios - Swift UITableViewCell 阴影不出现

ios - 表格 View 单元格接受文本输入?