gpt4 book ai didi

swift - 如何对字典对象中的时间戳进行排序

转载 作者:搜寻专家 更新时间:2023-11-01 06:11:33 26 4
gpt4 key购买 nike

我正在尝试编写一个 LRU 缓存并创建一个对象,并通过查看时间戳来检查首先添加了哪个项目,如下所示。

导入基金会

class Item : Comparable 
{
var timeStamp : Date
var value : Int

init(_ value: Int)
{
self.value = value
self.timeStamp = Date()
}
}

func < (lhs: Item, rhs: Item) -> Bool {
return lhs.timeStamp < rhs.timeStamp
}

func == (lhs: Item, rhs: Item) -> Bool {
return lhs.timeStamp == rhs.timeStamp
}

var item1 = Item (1)
var item2 = Item (2)
var item3 = Item (3)

var items = [1: item1 , 2 : item2, 3: item3]
items = items.sorted(by: {$0.date.compare($1.date) == .orderedDescending})
print(items)

我遇到了以下问题:

error: value of tuple type '(key: Int, value: Item)' has no member 'date' items = items.sorted(by: {$0.date.compare($1.date) == .orderedDescending})

然后我需要排序并找到字典中最早的时间戳。

最佳答案

您可以简单地使用 <比较运算符 Date

let sortedItems = items.sorted(by: {$0.value.timeStamp < $1.value.timeStamp})

我不建议实现 Comparable ,因为即使在某些情况下我可能只想根据时间戳对您的项目进行排序,但您似乎应该考虑 value以及,特别是对于其他场景中的相等性检查。

如果你真的只需要检查timeStamp为了比较,你可以制作Item符合 Comparable并缩短 sorted 的关闭时间.

extension Item: Comparable {
static func == (lhs: Item, rhs: Item) -> Bool {
return lhs.timeStamp == rhs.timeStamp
}

static func < (lhs: Item, rhs: Item) -> Bool {
return lhs.timeStamp < rhs.timeStamp
}
}

let sortedItems = items.sorted(by: {$0.value < $1.value})

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

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