[英]Sorting array of dictionaries of strings in Swift
我正在嘗試對Swift中的字典進行排序。 我的結構是這樣的:
[
[
"DateTime": "8/16/16, 4:00 PM",
"Owner": "Teacher1",
"Subject": "AP Euro",
"Address": "Mr. Hughes\' Room",
"Type": "Final",
"Timestamp": "2016081616009498",
"Location": "On Campus",
"Duration": "50 min",
"Members": "ownerKey,1,107434,109431"
],
[
"DateTime": "7/29/16, 6:35 AM",
"Owner": "109431",
"Subject": "Algebra 2 Acc",
"Address": "Library",
"Type": "Quiz",
"Timestamp": "2016072906356642",
"Location": "On Campus",
"Duration": "5 min",
"Members": "ownerKey"
]
]
我正在嘗試通過每個字典中的每個“ Timestamp
”值對數組進行排序。 我怎樣才能做到這一點?
我當前的代碼(不起作用)是:
self.todayArray.sortInPlace {item1,item2 in
let date1 = Int("\(item1["Timestamp"])")
let date2 = Int("\(item2["Timestamp"])")
return date1 > date2
}
N / M下面的所有內容,都是按DateTime字段進行排序,您正嘗試對已經按字典順序進行排序的Timestamp字段進行排序,因此只需使用:
foo.sortInPlace { $0["Timestamp"] < $1["Timestamp"] }
由於時間戳是一個字符串編碼的日期,因此您首先需要將其轉換為更有用的日期,使用NSDateFormatter是最簡單的方法:
有很多!
在這里您應該做一些更合適的事情,但這給了您基本的思想:
let foo = [
[
"DateTime": "8/16/16, 4:00 PM",
"Owner": "Teacher1",
"Subject": "AP Euro",
"Address": "Mr. Hughes\' Room",
"Type": "Final",
"Timestamp": "2016081616009498",
"Location": "On Campus",
"Duration": "50 min",
"Members": "ownerKey,1,107434,109431"
],
[
"DateTime": "7/29/16, 6:35 AM",
"Owner": "109431",
"Subject": "Algebra 2 Acc",
"Address": "Library",
"Type": "Quiz",
"Timestamp": "2016072906356642",
"Location": "On Campus",
"Duration": "5 min",
"Members": "ownerKey"
]
]
let formatter = NSDateFormatter()
formatter.dateFormat = "M/dd/yy, h:mm a"
let sorted = foo.sort {
formatter.dateFromString($0["DateTime"]!)!.compare(formatter.dateFromString($1["DateTime"]!)!) != .OrderedDescending
}
print("\(sorted)")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.