使用map 创建一个包含您所在国家/地区的symbol、name 和currency 的元组数组,然后按name 对该数组进行排序:
let list = ["US" : ["United-States","$"],
"FR" : ["France","€"],
"CN" : ["China", "¥"]]
let newlist = list.map { (symbol: $0.key, name: $0.value.first ?? "", currency: $0.value.dropFirst().first ?? "")}.sorted { $0.name < $1.name }
print(newlist)
[(符号:“CN”,名称:“中国”,货币:“¥”),(符号:“FR”,名称:“法国”,货币:“€”),(符号:“US” , 名称:“美国”,货币:“$”)]
这将允许您轻松访问餐桌的所有信息:
let symbol = newlist[indexPath.row].symbol
let name = newlist[indexPath.row].name
let currency = newlist[indexPath.row].currency
或者只是:
let (symbol, name, currency) = newlist[indexPath.row]
为您的更复杂的字典...
你的一个问题是你的value 现在是[Any],所以需要条件转换。另外,分解newlist 的创建和排序。
let list = ["US" : ["United-States","$","My comment", 10],
"FR" : ["France","€", "My super comment", 20],
"CA" : ["Canada","$", "Whatever", 15],
"CN" : ["China", "¥", "Final comment", 5]]
let newlist = list.map { (symbol: $0.key,
name: $0.value.first as? String ?? "",
currency: $0.value.dropFirst().first as? String ?? "",
comment: $0.value.dropFirst(2).first as? String ?? "",
value: $0.value.dropFirst(3).first as? Int ?? 0) }
let sortedlist = newlist.sorted { $0.name < $1.name }
print(sortedlist)
[(符号:“CA”,名称:“加拿大”,货币:“$”,注释:“随便”,值:15),(符号:“CN”,名称:“中国”,货币:“ ¥”,comment:“最终评论”,价值:5),(符号:“FR”,名称:“法国”,货币:“€”,评论:“我的超级评论”,价值:20),(符号: “US”,名称:“United-States”,货币:“$”,评论:“我的评论”,值:10)]