Sort array of dictionary

人盡茶涼 提交于 2019-11-28 10:10:41

问题


I need to sort an array of dictionaries in the following ways. The array contains dictionaries with the following format:

[{
  fecha = "09:54:51";
  "nombre_vendedor" = Rafaela;
  numero = 501;
  precio = 52;
  "punto_venta" = Base;
  tipo = Gold;
}
{
  fecha = "09:54:51";
  "nombre_vendedor" = Miguel;
  numero = 400;
  precio = 40;
  "punto_venta" = Base;
  tipo = Gold;
}]

All I have to sort by the "numero" key.

Anyone have any idea how to do this. I've been trying to sortedArrayUsingComparator method but I get no result.

Thank You.


回答1:


You can use the sort method the following way:

myArray.sort { $0["numero"]! < $1["numero"]! }



回答2:


Try this:

var descriptor: NSSortDescriptor = NSSortDescriptor(key: "numero", ascending: true)
var sortedResults: NSArray = results.sortedArrayUsingDescriptors([descriptor])



回答3:


You can use the sort method, passing a closure which, given 2 array elements, determines which one comes first.

A safe way to achieve that is:

array.sort { (lhs, rhs) in
    if let n2 = rhs["numero"] as? Int {
        if let n1 = lhs["numero"] as? Int {
            return n1 < n2
        }
        return false
    }
    return true
}

As you may notice, I usually prefer to use safe code vs. unsafe - that's the reason why the code checks for existance of the numero key on both dictionaries.

The above implementation sorts the array in place, placing items not having the numero key at the end - if you want the opposite case, just switch the last 2 return statements



来源:https://stackoverflow.com/questions/28463627/sort-array-of-dictionary

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!