IOS·Swift 集合类型之字典类型排序

       Swift语言提供了经典的数组和字典两种集合类型来存储数据。数组用来按顺序存储相同的类型的数据。字典虽然无序存储相同类型数据值但是需要由独有的标识符引用和寻址(就是键值对)。

        Swift语言里的数组和字典中存储的数据值类型必须明确。这意味着我们不能把不同正确的数据类型插入其中。同时这也说明我们完全可以对获取出的值类型非常自信。Swift对显式类型集合的使用确保了我们的代码对工作所需要的类型非常清楚。也让我们在开发中可以早早地找到任何的类型 不匹配错误。

        Swift的字典使用时需要具体规定可以存储键和值类型。不同于objective-C 的NSDictionary 和 NSMutableDictionary 类可以使用任何类型的对象来作为键 和 值并且不提供任何关于这些对象本质的信息。在Swift中,在某个预定的字典中可以存储的键 和 值必须提前定义清楚,方法是通过显性类型标注或者类型推断。

       清楚了字典的特性后就方便我们正确的使用。在实际开发中发现对字典排序的需求非常多,于是结合网上资料整理出如下代码以供大家参考:

按照键排序:
   let dicGradeData:[Int:Array] = [1:["三班","四班","一班","二班"],6:["一班","二班","三班"],5:["一班","三班","二班"],2:["四班","一班","二班","三班"],3:["一班","二班","三班","四班"],4:["一班","三班","四班","二班"]]
   NSLog("排序前:%@",dicGradeData)

   //按照键降序排序
   var arrTemp = dicGradeData.sort { (t1, t2) -> Bool in
       return t1.0 > t2.0 ? true:false
   }
   print("按照键降序排序:")
   for (key,value) in arrTemp{
       print(key,value)
   }

   //按照键升序排序
   arrTemp = dicGradeData.sort({ (t1, t2) -> Bool in
        return t1.0 < t2.0 ? true:false
   })
   print("按照键升序排序:")
   for (k,v) in arrTemp{
       print(k,v)
   }

按照值排序:
   var arrDicData:[[String:NSObject]] = [[String:NSObject]]()
   for i in 0..<10 {
       arrDicData.append([
            "ID": i,
            "Age": 18 + (Int)(arc4random() % 100),
            "Name":"test\(i + 1)",
            "Sex":i % 2 == 0 ? "Man":"Woman",
            "AddDatetime":(Int)(NSDate().timeIntervalSince1970)
       ])
   }
   NSLog("按照字典值排序前:%@",arrDicData)

   let ageDesc:[[String:NSObject]] = arrDicData.sort { (t1, t2) -> Bool in
       return (t1["Age"] as! Int) > (t2["Age"] as! Int) ? true:false
   }
   NSLog("按照年龄值降序排序后:%@",ageDesc)
   
                (注:按照值升序排序做法同上,此处省略300行……)


本文只是抛砖引玉,如有纰漏请见谅!
关于Swift字典的其他基本用法请自行查找资料,可参考本网址:https://www.gitbook.com/book/numbbbbb/-the-swift-programming-language-/details


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

追夢秋陽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值