Ordenar una variedad de dictionarys en Swift 2

¡He leído muchos artículos sobre SO y todavía estoy perplejo! Tengo una variedad de dictionarys, ver a continuación:

var myArray = [[String:AnyObject]]() myArray.append([ "caseNumber" : "12349", "formType" : "Advanced", "caseStatus" : "Approved", "caseDetails" : "blah blah", "caseLUD" : NSDate(), "friendlyName" : "name1" ]) myArray.append([ "caseNumber" : "12345", "formType" : "Standard", "caseStatus" : "On-Hold", "caseDetails" : "blah blah", "caseLUD" : NSDate(), "friendlyName" : "name2" ]) myArray.append([ "caseNumber" : "12342", "formType" : "Normal", "caseStatus" : "Rejected", "caseDetails" : "blah blah", "caseLUD" : NSDate(), "friendlyName" : "name3" ]) 

Estos datos entrarán en una tablaView y quiero que el usuario pueda decidir el order de sorting, ya sea por caseNumber de caseNumber o por mi caseLUD (date). Pero no puedo entender cómo reorderar la matriz por valores. ¿Alguna idea, por favor? Toda la ayuda apreciada.

Para orderar por caseNumber :

 myArray.sortInPlace { ($0["caseNumber"] as! String) < ($1["caseNumber"] as! String) } 

Tenga en count que esto usa caseNumber como una String que podría generar resultados sorprendentes (por ejemplo, "12345" < "2" ). Es posible que desee almacenar caseNumber como un Int , o convertirlo a un Int al orderar:

 myArray.sortInPlace { Int($0["caseNumber"] as! String) < Int($1["caseNumber"] as! String) } 

Para orderar por caseLUD :

 myArray.sortInPlace { ($0["caseLUD"] as! NSDate).compare($1["caseLUD"] as! NSDate) == .OrdenetworkingAscending} 

.OrdenetworkingAscending le dará la date más temprana primero, y .OrdenetworkingDescending le dará la última date primero.


Si almacenó sus datos en un Struct lugar de en un Dictionary , podría evitar el desorderado encasillado.

 struct CaseRecord { var caseNumber: Int var formType: String var caseStatus: String var caseDetails: String var caseLUD: NSDate var friendlyName: String } var myArray = [CaseRecord]() myArray.append(CaseRecord( caseNumber : 12345, formType : "Advanced", caseStatus : "Approved", caseDetails : "blah blah", caseLUD : NSDate(), friendlyName : "name1" ) ) myArray.append(CaseRecord( caseNumber : 124, formType : "Standard", caseStatus : "On-Hold", caseDetails : "blah blah", caseLUD : NSDate(), friendlyName : "name2" ) ) myArray.append(CaseRecord( caseNumber : 13, formType : "Normal", caseStatus : "Rejected", caseDetails : "blah blah", caseLUD : NSDate(), friendlyName : "name3" ) ) myArray.sortInPlace { $0.caseNumber < $1.caseNumber } myArray.sortInPlace { $0.caseLUD.compare($1.caseLUD) == .OrdenetworkingDescending }