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解析为结构。这让事情变得容易多了。

10-06 05:24