IOS·Swift 集合类型之字典类型排序
2016-03-13 19:03
246 查看
Swift语言提供了经典的数组和字典两种集合类型来存储数据。数组用来按顺序存储相同的类型的数据。字典虽然无序存储相同类型数据值但是需要由独有的标识符引用和寻址(就是键值对)。
Swift语言里的数组和字典中存储的数据值类型必须明确。这意味着我们不能把不同正确的数据类型插入其中。同时这也说明我们完全可以对获取出的值类型非常自信。Swift对显式类型集合的使用确保了我们的代码对工作所需要的类型非常清楚。也让我们在开发中可以早早地找到任何的类型 不匹配错误。
Swift的字典使用时需要具体规定可以存储键和值类型。不同于objective-C 的NSDictionary 和 NSMutableDictionary 类可以使用任何类型的对象来作为键 和 值并且不提供任何关于这些对象本质的信息。在Swift中,在某个预定的字典中可以存储的键 和 值必须提前定义清楚,方法是通过显性类型标注或者类型推断。
清楚了字典的特性后就方便我们正确的使用。在实际开发中发现对字典排序的需求非常多,于是结合网上资料整理出如下代码以供大家参考:
本文只是抛砖引玉,如有纰漏请见谅!
关于Swift字典的其他基本用法请自行查找资料,可参考本网址:https://www.gitbook.com/book/numbbbbb/-the-swift-programming-language-/details
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
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- Apple Swift学习教程
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- 介绍 Fedora 上的 Swift
- C#中Dictionary类使用实例
- Dictionary扩展基础类向字典中添加键和值
- asp dictionary对象的用法
- C# Dictionary的使用实例代码
- RadioButtonList绑定图片及泛型Dictionary应用
- 讲解iOS开发中基本的定位功能实现
- iOS中定位当前位置坐标及转换为火星坐标的方法
- js判断客户端是iOS还是Android等移动终端的方法
- iOS应用中UISearchDisplayController搜索效果的用法
- IOS开发环境windows化攻略