json数据从dataTask网络调用返回并分配给以下数组:
let json = try? JSONSerialization.jsonObject(with: data!, options: [])
if let jsonarray = json as? [Any] {
self.cardArray = jsonarray
}
json如下所示:
[
{
"deviceID":114,
"UserName":"[email protected]",
"Name":"under sink",
"UniqueId":"D0:B5:C2:F2:B8:88",
"RowCreatedDateTime":"2018-01-02T16:07:31.607"
}
]
如何根据名为RowCreatedDateTime的json属性对该数组进行排序(降序)?
我试过但没成功:
cardArray.sort{
$0.RowCreatedDateTime < $1.RowCreatedDateTime
}
最佳答案
假设所有字典都包含键RowCreatedDateTime
则必须按键获取值。不能在字典中使用点符号。
cardArray.sort{
($0["RowCreatedDateTime"] as! String) < $1["RowCreatedDateTime"] as! String
}
如果你知道数组的类型是
[[String:Any]]
永远不要把它转换成更多未指定的[Any]
。声明
cardArray
为字典数组var cardArray = [[String:Any]]()
以这种方式解析JSON
do {
if let jsonArray = try JSONSerialization.jsonObject(with: data!) as? [[String:Any]] {
self.cardArray = jsonArray
}
} catch { print(error) }
考虑使用Swift 4中的
Codable
将JSON解析为结构。这让事情变得容易多了。