按值对[String:[String:Any]]类型的字典进行排序

时间:2019-04-05 06:34:48

标签: arrays swift sorting dictionary

我正在研究一个IOS项目,该项目从Google的Firebase Firestore获取其数据。

我在Firestore中有这样的文档:

  • 5lTSobXhcQBR2oG95s5q

    • 标题:“ ABC”
    • 时间戳记:1554374528.641053
  • FEeIAlAPlcrVvvtSKn8D

    • 标题:“ XYZ”
    • 时间戳:1554443702.1300058

在我的IOS项目中,我有一个像这样的字典:

myDictionary: [String: [String: Any]] = [5lTSobXhcQBR2oG95s5q: ["Title": "ABC", "Timestamp": 1554374528.641053], FEeIAlAPlcrVvvtSKn8D: ["Title": "XYZ", "Timestamp": 1554443702.1300058]]

如何按时间戳对字典进行排序?

2 个答案:

答案 0 :(得分:0)

如果您可以返回一个元组数组,则可以使用--c2x带闭包

--ops

请注意,如果两个值中的任何一个都不能转换为double或不存在,则默认情况下,我会在此处返回true。当然,根据两个元素中哪个失败,可以实现更高级的逻辑。

答案 1 :(得分:-1)

iOS或swift中的每个集合都具有排序功能。 例如:

let sortedArray = dictionary.sort() { return $0.timestamp < $1.timestamp }

$ 0将引用“第一个”元素,$ 1将引用第一个元素。

在您的示例中,逻辑是相同的。 我会这样做: 提取时间戳数据,并将其存储在额外的字典中,其中id为键,值为时间戳。然后,我将使用.sort函数对字典中的这些元素进行排序。