Swift-数组排序⽅法(附样例)
下⾯通过⼀个样例演⽰如何对数组元素进⾏排序。数组内为⾃定义⽤户对象,最终要实现按⽤户名排序,数据如下: 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})
根据上⾯的⽅法项⽬中的物流页⾯显⽰按照时间排序正确显⽰
1、⽹络解析的数据字典
JSOnDictory>>>>>>>>>>>>>>>>>>>>>>>>>> {
"LogisticCode" : "412123771581",
"Traces" : [
{
"AcceptTime" : "2016-09-19 19:24:51",
"AcceptStation" : "北京⼤兴城区的康建朋186******** 已收件"
},
{
"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" : "北京北苑的王赛威180******** 正在派件"
},
{
"AcceptTime" : "2016-09-20 12:55:12",
"AcceptStation" : "北京北苑的派件已签收,感谢您使⽤中通快递!"
}
],
"Success" : true,
"ShipperCode" : "ZTO",
"State" : "3",
"EBusinessID" : "1265535"
}
根据需求只需要物流信息部分取其中的key对应的value值作为⼀个数组
排序前————————traces>>>>>>>>>>>>>>>>>>>>>>>>>>Optional([{
"AcceptTime" : "2016-09-19 19:24:51",
"AcceptStation" : "北京⼤兴城区的康建朋186******** 已收件"
}, {
"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" : "北京北苑的王赛威180******** 正在派件"
}, {
"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" : "北京北苑的王赛威180******** 正在派件"
}, {
"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" : "北京⼤兴城区的康建朋186******** 已收件"
}])
具体解析代码为:
.responseJSON { response in
print(Request)
print("response>>>>>>>>>>>>>>>>>>>>>>",response)
// 有错误就打印错误,没有就解析数据
if let Error =
{
print(Error)
}
else if let jsonresult = sult.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)
}
loadData()
//                    // 以升序排列为例,原数组可改变
//                    array.sortInPlace(<)
//                    // 以降序排列为例,原数组不可改变
//                    newArray = array.sort(>)
swift 字符串转数组}
}
//数组排序关键代码
traces?.sortInPlace({$0["AcceptTime"] > $1["AcceptTime"]})

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。