gpt4 book ai didi

swift - 如何通过 NSDate 在 Swift 中对字典进行排序?

转载 作者:可可西里 更新时间:2023-11-01 01:05:38 24 4
gpt4 key购买 nike

我在 Swift 中有一个字典,看起来有点像这样:

[
"1": [
"start": //An NSDate,
"end": //An NSDate,
"id": "1",
"other non relevant items": "below",
]
]

我想按开始日期排序,关键字为 "start"。我看过关于按值对字典进行排序的文章 here但是我如何使用 NSDates 来做到这一点?能否也举个例子?

最佳答案

请注意,您无法对字典进行排序,除非您可以对任何序列进行排序,这会将其转换为键/值对数组。

你还没有说,但假设你的字典是 [String:[String:AnyObject]] 类型的,您可以像这样对其进行排序(以获取成对数组的结果,即 [(String,[String:AnyObject])] ):

let sorted = d.sort { lhs,rhs in
let l = lhs.1["start"] as? NSDate
let r = rhs.1["start"] as? NSDate
return l < r
}

这是假设您还增强了 NSDate有一个<像这样的运营商:

extension NSDate: Comparable { }

public func ==(lhs: NSDate, rhs: NSDate) -> Bool {
return lhs.isEqualToDate(rhs)
}

public func <(lhs: NSDate, rhs: NSDate) -> Bool {
return lhs.compare(rhs) == .OrderedAscending
}

根据字典的实际类型,这可能需要更多类型强制转换。

如果您不想要排序数组中的键(因为它只是 ID 的复制品),只需对值进行排序:

let sorted = d.values.sort { lhs, rhs in
let l = lhs["start"] as? NSDate
let r = rhs["start"] as? NSDate
return l < r
}

也就是说,除了最基本的操作之外,我建议不要使用字典,而是编写自定义结构并将数据存储在其中,这将使此类操作更加简单。

关于swift - 如何通过 NSDate 在 Swift 中对字典进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31249778/

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