Swift 4-如何对具有任意值的字典数组进行排序

时间:2018-08-08 18:08:32

标签: swift4

我有一系列的字典。

词典中有3个字符串和1个数字。

var allScores = [[String:Any]]()
var scoreDict = [String:Any]()
scoreDict["Score"] = score as Int
scoreDict["Designation"] = designation
scoreDict["Name"] = name
scoreDict["Emoji"] = emoji
allScores.append(scoreDict)

如何按分数降序排序?

我尝试过

allScores.sort(by: {$0.Score.compare($1.Score, options: .numeric) == .orderedAscending})

但是我得到了错误

  

“ [String:Any]”类型的值没有成员“得分”

1 个答案:

答案 0 :(得分:1)

您无法使用点符号来访问字典,也无法使用step0: sum(3) step1: 3 + sum(2) step2: 3 + 2 + sum(1) step3: 3 + 2 + 1 Int值进行排序

使用密钥订阅,键入强制类型转换和compare:options:运算符。

>

鼓励您使用自定义结构而不是字典

allScores.sort(by: {($0["Score"] as! Int) > $1["Score"] as! Int})

然后您可以使用点符号

struct Score {
    let score : Int
    let destination : String
    let name : String
    let emoji : String
}

var allScores = [Score]()