yz_*_*yz_ 2 sorting dictionary swift
我的字典是这样的:
var items = [Int: [String]]()
var itemsResult = [Int: [String]]()
Run Code Online (Sandbox Code Playgroud)
itmesResult存储从服务器下载的数据.并将数据传递给items = itmesResult的项目使用
该值有3个元素,如["Apple","/ image/apple.png","29"],我想按照Apple的第一个值对字典进行排序.
for (k,v) in (itemsResult.sorted(by: { $0.value[0] < $1.value[0] })) {
items[k] = v
}
Run Code Online (Sandbox Code Playgroud)
上面代码的结果不是我的期望.
我想按字母顺序排序,我该怎么做?
编辑:
起源:
1:["Apple","/image/apple.png","29"]
2:["AAA","/image/aaa.png","29"]
3:["Banana","/image/banana.png","29"]
Run Code Online (Sandbox Code Playgroud)
排序方式:
2:["AAA","/image/aaa.png","29"]
1:["Apple","/image/apple.png","29"]
3:["Banana","/image/banana.png","29"]
Run Code Online (Sandbox Code Playgroud)
我想按第一个价值排序.
小智 6
所以如果我举个例子,这就是诀窍:
var items = [Int: [String]]()
items[0] = ["Apple","/image/apple.png","29"]
items[1] = ["AAA","/image/aaa.png","29"]
items[2] = ["Banana","/image/banana.png","29"]
let itemResult = items.sorted { (first: (key: Int, value: [String]), second: (key: Int, value: [String])) -> Bool in
return first.value.first! < second.value.first!
}
print (itemResult)
Run Code Online (Sandbox Code Playgroud)
正确的做法是使用对象当然,并注意我没有空检查每个数组中的"第一个"对象,但这不是一个需要更改的问题.
让我知道如果这是你正在寻找的,输出是:
[(1, ["AAA", "/image/aaa.png", "29"]), (0, ["Apple", "/image/apple.png", "29"]), (2, ["Banana", "/image/banana.png", "29"])]
Run Code Online (Sandbox Code Playgroud)
编辑:还要注意,这种情况实际上并没有"排序"字典,因为字典按照定义没有排序,这创建了一个使用数组索引排序的键值对象数组
| 归档时间: |
|
| 查看次数: |
7030 次 |
| 最近记录: |