下面經過一個樣例演示如何對數組元素進行排序。數組內爲自定義用戶對象,最終要實現按用戶名排序,數據以下:json
var userList = [UserInfo]() userList.append(UserInfo(name: "張三", phone: "4234")) userList.append(UserInfo(name: "李四", phone: "1212")) userList.append(UserInfo(name: "航歌", phone: "3525"))
方法1 (針對上面數組進行降序排列)數組
userList.sortInPlace(onSort) func onSort(s1:UserInfo, s2:UserInfo) -> Bool{ return s1.name > s2.name }
方法2網絡
userList.sortInPlace({$0.name > $1.name})
根據上面的方法項目中的物流頁面顯示 按照時間排序 正確顯示app
一、網絡解析的數據 字典post
JSOnDictory>>>>>>>>>>>>>>>>>>>>>>>>>> { "LogisticCode" : "412123771581", "Traces" : [ { "AcceptTime" : "2016-09-19 19:24:51", "AcceptStation" : "北京大興城區 的 康建朋18610592094 已收件" }, { "AcceptTime" : "2016-09-19 19:26:00", "AcceptStation" : "快件離開 北京大興城區 已發往 北京" }, { "AcceptTime" : "2016-09-19 22:41:05", "AcceptStation" : "快件已到達 北京市內部" }, { "AcceptTime" : "2016-09-20 00:01:27", "AcceptStation" : "快件離開 北京市內部 已發往 北京北苑" }, { "AcceptTime" : "2016-09-20 06:38:52", "AcceptStation" : "快件已到達 北京北苑" }, { "AcceptTime" : "2016-09-20 07:55:59", "AcceptStation" : "北京北苑 的 王賽威18001223683 正在派件" }, { "AcceptTime" : "2016-09-20 12:55:12", "AcceptStation" : "北京北苑的派件已簽收,感謝您使用中通快遞!" } ], "Success" : true, "ShipperCode" : "ZTO", "State" : "3", "EBusinessID" : "1265535" }
根據需求只須要 物流信息部分 取其中的key對應的value值 做爲一個數組spa
排序前————————traces>>>>>>>>>>>>>>>>>>>>>>>>>>Optional([{ "AcceptTime" : "2016-09-19 19:24:51", "AcceptStation" : "北京大興城區 的 康建朋18610592094 已收件" }, { "AcceptTime" : "2016-09-19 19:26:00", "AcceptStation" : "快件離開 北京大興城區 已發往 北京" }, { "AcceptTime" : "2016-09-19 22:41:05", "AcceptStation" : "快件已到達 北京市內部" }, { "AcceptTime" : "2016-09-20 00:01:27", "AcceptStation" : "快件離開 北京市內部 已發往 北京北苑" }, { "AcceptTime" : "2016-09-20 06:38:52", "AcceptStation" : "快件已到達 北京北苑" }, { "AcceptTime" : "2016-09-20 07:55:59", "AcceptStation" : "北京北苑 的 王賽威18001223683 正在派件" }, { "AcceptTime" : "2016-09-20 12:55:12", "AcceptStation" : "北京北苑的派件已簽收,感謝您使用中通快遞!" }])
排序後——————————traces>>>>>>>>>>>>>>>>>>>>>>>>>>Optional([{ "AcceptTime" : "2016-09-20 12:55:12", "AcceptStation" : "北京北苑的派件已簽收,感謝您使用中通快遞!" }, { "AcceptTime" : "2016-09-20 07:55:59", "AcceptStation" : "北京北苑 的 王賽威18001223683 正在派件" }, { "AcceptTime" : "2016-09-20 06:38:52", "AcceptStation" : "快件已到達 北京北苑" }, { "AcceptTime" : "2016-09-20 00:01:27", "AcceptStation" : "快件離開 北京市內部 已發往 北京北苑" }, { "AcceptTime" : "2016-09-19 22:41:05", "AcceptStation" : "快件已到達 北京市內部" }, { "AcceptTime" : "2016-09-19 19:26:00", "AcceptStation" : "快件離開 北京大興城區 已發往 北京" }, { "AcceptTime" : "2016-09-19 19:24:51", "AcceptStation" : "北京大興城區 的 康建朋18610592094 已收件" }])
具體解析代碼爲:code
Alamofire.request(.POST, ReqURL, parameters: parameters )對象
.responseJSON { response inblog
print(Request)排序
print("response>>>>>>>>>>>>>>>>>>>>>>",response)
// 有錯誤就打印錯誤,沒有就解析數據
if let Error = response.result.error
{
print(Error)
}
else if let jsonresult = response.result.value {
// 用 SwiftyJSON 解析數據
let JSOnDictory = JSON(jsonresult)
print("JSOnDictory>>>>>>>>>>>>>>>>>>>>>>>>>>",JSOnDictory)
var traces = JSOnDictory["Traces"].array
print("排序前————————traces>>>>>>>>>>>>>>>>>>>>>>>>>>\(traces)")
traces?.sortInPlace({$0["AcceptTime"] > $1["AcceptTime"]})
// userList.sortInPlace({$0.name > $1.name})
print("排序後——————————traces>>>>>>>>>>>>>>>>>>>>>>>>>>\(traces)")
for dataDic in traces! {
let model = itemsModel()
model.postInfo = dataDic["AcceptStation"].string ?? ""
model.datetime = dataDic["AcceptTime"].string ?? ""
print(model.postInfo)
print(model.datetime)
self.dataArray.append(model)
print(self.dataArray)
}
self.tableView.reloadData()
// // 以升序排列爲例,原數組可改變
// array.sortInPlace(<)
// // 以降序排列爲例,原數組不可改變
// newArray = array.sort(>)
}
}
//數組排序關鍵代碼
traces?.sortInPlace({$0["AcceptTime"] > $1["AcceptTime"]})