gpt4 book ai didi

swift - 如何在 Swift 中按 future 时间对对象进行排序?

转载 作者:行者123 更新时间:2023-11-30 10:15:51 25 4
gpt4 key购买 nike

我有一个带有 time 属性的对象数组,我想以特殊方式对其进行排序。我想对它们进行排序,以便首先具有 future 时间的对象,然后在其后面对时间进行排序,然后循环回过去的项目。这是我到目前为止所拥有的:

struct MyStruct {
var name: String = ""
var time: Double = Double(0)
}

var currentTime = NSDate().timeIntervalSince1970
var myArr: [MyStruct] = []
myArr.append(MyStruct(name: "Abc", time: currentTime - 3)) // Past
myArr.append(MyStruct(name: "Def", time: currentTime - 5)) // Past
myArr.append(MyStruct(name: "Ghi", time: currentTime - 1)) // Past
myArr.append(MyStruct(name: "Jkl", time: currentTime + 3)) // Future
myArr.append(MyStruct(name: "Mno", time: currentTime + 2)) // Future

var mySorted = myArr.sorted { $0.time < $1.time }

mySorted // Outputs structs in this order: Def, Abc, Ghi, Mno, Jkl

我不知道在排序谓词中要做什么来首先按最接近的 future 时间排序。换句话说,我想根据当前时间显示下一个出现的对象。所以上面的内容应该排序为:Mno, Jkl, Ghi, Abc, Def。我一直在绞尽脑汁地想这个问题,希望有人能看到一个算法?

最佳答案

如果你想使用更实用的风格,你可以使用

let mySorted2 = 
myArr.filter{ $0.time > currentTime }.sorted{ $0.time < $1.time } +
myArr.filter{ $0.time <= currentTime }.sorted{ $0.time > $1.time }

我认为这段代码更具可读性,因为该代码更符合您的要求。获取所有 future 日期并按升序对它们进行排序,然后附加按降序排序的所有过去日期。

关于swift - 如何在 Swift 中按 future 时间对对象进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30037023/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com