Ios 在Swift 2中对字典数组进行排序
我已经读了很多关于SO的文章,但我仍然感到困惑!我有一系列字典,请参见下文:Ios 在Swift 2中对字典数组进行排序,ios,arrays,swift,sorting,dictionary,Ios,Arrays,Swift,Sorting,Dictionary,我已经读了很多关于SO的文章,但我仍然感到困惑!我有一系列字典,请参见下文: var myArray = [[String:AnyObject]]() myArray.append([ "caseNumber" : "12349", "formType" : "Advanced", "caseStatus" : "Approved", "caseDetails" : "blah blah", "caseLUD" : NSDate(), "frie
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"
])
该数据将进入表格视图,我希望用户能够通过
caseNumber
或mycaseLUD
(日期)来决定排序顺序。但我不知道如何按值对数组重新排序。有什么想法吗?感谢所有帮助。要按案例编号排序
:
myArray.sortInPlace { ($0["caseNumber"] as! String) < ($1["caseNumber"] as! String) }
要按案例LUD进行排序,请执行以下操作:
myArray.sortInPlace { ($0["caseLUD"] as! NSDate).compare($1["caseLUD"] as! NSDate) == .OrderedAscending}
.OrderedAscending
将首先给出最早的日期,.OrderedAscending
将首先给出最晚的日期
如果将数据存储在
结构
而不是字典
中,可以避免混乱的类型转换
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) == .OrderedDescending }
struct casecord{
var案例编号:Int
var formType:String
var caseStatus:字符串
var caseDetails:字符串
变量caseLUD:NSDate
var-friendlyName:String
}
var myArray=[CaseRecord]()
myArray.append(CaseRecord)(
案件编号:12345,
formType:“高级”,
案例状态:“已批准”,
案件详情:“胡说八道”,
caseLUD:NSDate(),
friendlyName:“名称1”
)
)
myArray.append(CaseRecord)(
案件编号:124,
formType:“标准”,
案件状态:“待决”,
案件详情:“胡说八道”,
caseLUD:NSDate(),
friendlyName:“名称2”
)
)
myArray.append(CaseRecord)(
案件编号:13,
formType:“正常”,
案例状态:“已拒绝”,
案件详情:“胡说八道”,
caseLUD:NSDate(),
friendlyName:“名称3”
)
)
myArray.sortInPlace{$0.caseNumber<$1.caseNumber}
myArray.sortInPlace{$0.caseLUD.compare($1.caseLUD)==.OrderedDescending}
如果已将字典放入数组,只需对数组进行排序即可。Swift数组有一个排序
方法。你试过了吗?在Obj-C中我做过:NSSortDescriptor*sortByName=[NSSortDescriptor sortdescriptor with key:@“caseLUD”升序:否];NSArray*sortDescriptors=[NSArray阵列WithObject:sortByName];但我不能用迅捷的语言来表达感谢,这很有帮助。
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) == .OrderedDescending }