我已经阅读了很多关于 SO 的文章,但我仍然感到困惑!我有一系列字典,见下文:
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"
])
此数据将进入 tableView,我希望用户能够通过 caseNumber
或我的 caseLUD
(日期)来决定排序顺序。但我不知道如何按值重新排序数组。有什么想法吗?感谢所有帮助。
最佳答案
按 caseNumber
排序:
myArray.sortInPlace { ($0["caseNumber"] as! String) < ($1["caseNumber"] as! String) }
请注意,这使用了 caseNumber
作为String
这可能会导致令人惊讶的结果(例如 "12345" < "2"
)。您可能想要存储 caseNumber
作为Int
, 或将其转换为 Int
排序时:
myArray.sortInPlace { Int($0["caseNumber"] as! String) < Int($1["caseNumber"] as! String) }
按 caseLUD
排序:
myArray.sortInPlace { ($0["caseLUD"] as! NSDate).compare($1["caseLUD"] as! NSDate) == .OrderedAscending}
.OrderedAscending
会先给你最早的日期,然后.OrderedDescending
会先给你最新的日期。
如果您将数据存储在 Struct
中而不是 Dictionary
,您可以避免困惑的类型转换。
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 }
关于ios - 在 Swift 2 中对字典数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36246582/