Ios Swift中字典的排序数组
大家好,我正在尝试使用swift中的sortedby对字典的数组([[“key”:Int,“value”:Any]]格式)进行排序,但它无法工作。这是我的字典数组,这些字典包含一个字典,我在子字典中有一个唯一的标识符,即“id”,我还有唯一的键。请在这方面指导我。实际上,我的数据格式如下。如何使用“id”get值对其进行排序([“isMale”:false,“status:”,“name:“John”,“id”:10)])Ios Swift中字典的排序数组,ios,arrays,swift,sorting,dictionary,Ios,Arrays,Swift,Sorting,Dictionary,大家好,我正在尝试使用swift中的sortedby对字典的数组([[“key”:Int,“value”:Any]]格式)进行排序,但它无法工作。这是我的字典数组,这些字典包含一个字典,我在子字典中有一个唯一的标识符,即“id”,我还有唯一的键。请在这方面指导我。实际上,我的数据格式如下。如何使用“id”get值对其进行排序([“isMale”:false,“status:”,“name:“John”,“id”:10)]) var dataArray=[(键:10,值:[“isMale”:fal
var dataArray=[(键:10,值:[“isMale”:false,“status”:““name”:“John”,“id”:10)],(键:2,值:[“isMale”:false,“status”:““name”:“John”,“id”:2]),(键:3,值:[“isMale”:false,“status”:“,“name”:“John”,“id”:3]),(键:7,值:
[“isMale”:false,“status”:““name”:“John”,“id”:7]),(键:9,值:[“isMale”:false,“status”:““name”:“John”,“id”:9]),(键:4,值:[“isMale”:false,“status”:“John”,“id”:4]),(键:6,值:[“isMale”:false,“name”:“name”:“John”,“id”:6]),(键:5,值:[“isMale”:false,“status”:“name”:“John”,“id”:“id”:5]),(键:8,值:[“isMale”:false,“status”:“,“name”:“John”,“id”:8]),(键:11,值:[“isMale”:false,“status”:“name”:“John”,“id”:11]);
var data=[Int:Any]()data=dataArray.sorted(按:{$0<$1})
您可以按值[“id”]变量对数据数组进行如下排序:
var dataArray = [
(key: 10, value: ["isMale": false, "status": "", "name": "John","id": 10]),
(key: 2, value: ["isMale": false, "status": "", "name": "John","id": 2]),
(key: 3, value: ["isMale": false, "status": "", "name": "John","id": 3]),
(key: 7, value: ["isMale": false, "status": "", "name": "John","id": 7]),
(key: 9, value: ["isMale": false, "status": "", "name": "John","id": 9]),
(key: 4, value: ["isMale": false, "status": "", "name": "John","id": 4]),
(key: 6, value: ["isMale": false, "status": "", "name": "John","id": 6]),
(key: 5, value: ["isMale": false, "status": "", "name": "John","id": 5]),
(key: 8, value: ["isMale": false, "status": "", "name": "John","id": 8]),
(key: 11, value: ["isMale": false, "status": "", "name": "John","id": 11])];
let sorted = dataArray.sorted(by: {
let id0 = $0.value["id"] as! Int
let id1 = $1.value["id"] as! Int
return id0 < id1
})
print(sorted.map { $0.key })
var数据数组=[
(键:10,值:[“isMale”:false,“status:”“name:”“John”,“id:”“10]),
(键:2,值:[“isMale”:false,“status”:“name”:“John”,“id”:2]),
(键:3,值:[“isMale”:false,“status”:“name”:“John”,“id”:3]),
(键:7,值:[“isMale”:false,“status”:“name”:“John”,“id”:7]),
(键:9,值:[“isMale”:false,“status:”,“name:“John”,“id”:9]),
(键:4,值:[“isMale”:false,“status:”“name:”“John”,“id”:4]),
(键:6,值:[“isMale”:false,“status:”“name:”“John”,“id”:6]),
(键:5,值:[“isMale”:false,“status:”,“name:“John”,“id”:5]),
(键:8,值:[“isMale”:false,“status”:“name”:“John”,“id”:8]),
(键:11,值:[“isMale”:false,“status:”“name:”“John”,“id:”“11]);
设sorted=dataArray.sorted(按:{
设id0=$0.value[“id”]as!Int
设id1=$1.value[“id”]as!Int
返回id0
排序的逻辑是什么?换句话说:是什么定义了一个特定的dict在对另一个dict进行排序后应该位于较低的索引中?let result=dataArray.sorted(排序方式:{($0[“key”]as!Int)<($1[“key”]as!Int)})
排序后,我想得到所有的值,实际上我的数据的格式如下:[(“key”:“a”,“value”:[“isMale”:false,“status”:“name”:“John”,“id”:10],(“key”:“B”,“value”:[“isMale”:false”,“status”:”,“name”:“John”,“id”:2),(“key”:“C”,“value”:[“isMale”:false”,“status”:“name”:“John”,“id”:3])]
var dataArray = [
(key: 10, value: ["isMale": false, "status": "", "name": "John","id": 10]),
(key: 2, value: ["isMale": false, "status": "", "name": "John","id": 2]),
(key: 3, value: ["isMale": false, "status": "", "name": "John","id": 3]),
(key: 7, value: ["isMale": false, "status": "", "name": "John","id": 7]),
(key: 9, value: ["isMale": false, "status": "", "name": "John","id": 9]),
(key: 4, value: ["isMale": false, "status": "", "name": "John","id": 4]),
(key: 6, value: ["isMale": false, "status": "", "name": "John","id": 6]),
(key: 5, value: ["isMale": false, "status": "", "name": "John","id": 5]),
(key: 8, value: ["isMale": false, "status": "", "name": "John","id": 8]),
(key: 11, value: ["isMale": false, "status": "", "name": "John","id": 11])];
let sorted = dataArray.sorted(by: {
let id0 = $0.value["id"] as! Int
let id1 = $1.value["id"] as! Int
return id0 < id1
})
print(sorted.map { $0.key })