Swift如何按键值对数组字典进行排序

时间:2016-11-22 09:18:28

标签: arrays swift dictionary

我有一个URL列表及其从firebase数据库中获取的相应收藏计数,这些数据附加到字典数组中:

dictionaryArray = [[1: URL1], [2: URL2], [1: URL3]]

我知道我们可以使用.sort对字典数组进行排序,但是会删除具有类似键的字典,就像在这种情况下一样。

我如何对其进行排序,以便获得按其键排序的url数组:

urlArray = [URL2, URL1, URL3] 

因为URL2具有更高的键,而URL1和URL3具有相似的键

2 个答案:

答案 0 :(得分:2)

您可以使用高阶函数sorted和flatMap嵌套在一起,如下所示:

let sortedURLs = dictionaryArray
                    .sorted(by: { $0.keys.first! > $1.keys.first! })
                    .flatMap({ $0.values.first! })

注意:注意它在这里工作的强制解包选项,但可能会导致异常

答案 1 :(得分:-1)

您可以使用如下所示的排序描述符进行排序。

var descriptor: NSSortDescriptor = NSSortDescriptor(key: "name", ascending: true)
var sortedResults: NSArray = results.sortedArrayUsingDescriptors([descriptor])