我有一系列的字典。
词典中有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]”类型的值没有成员“得分”
答案 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]()