声明:此博客是本人在泊学网学习Swift过程的笔记与心得
Dictionary
通过key值来查询value值的数据结构
初始化
// 可以通过[key.Type: value.Type]的形式来代表Dictionary
let dic: [String: Int] = [
"First": 1,
"Second": 2,
"Third": 3
]
可以通过key值来获取对应的value值
dic["First"] // 1
dic["Third"] // 3
而如果通过没有定义的key来获取值,则会返回一个nil
由于value的类型并不是单纯的value.Type而是Optional类型,因此可以设置成nil来代表key的不存在,于是,也可以通过设置key对应的value为nil来删除Dictionary中的值
dic["End"] // nil
// 删除First对应的value
dic["First"] = nil
常用属性
Keys
Dictionary可以通过keys属性来获取当前Dictionary中所有的key,获取的对象可以通过forEach或for等方式来遍历(返回对象的类型较复杂)
dic.keys.forEach { print($0) }
for key in dic.keys { print(key) }
Values
Dictionary可以通过values属性来获取当前Dictionary中所有的value,操作方式同Keys
增删改查
增
Swift中Dictionary对于增删改查有着极大的便利,增加元素只需要直接给Dictionary增加key与value就可以了,并不需要调用API
dic["Forth"] = 4
删
在上面写到过,删仅需要将key对应的value设置成nil即可
dic["Forth"] = nil
改
修改也是很简单的,就是把key对应的value修改即可
dic["First"] = 0
查
key对应value,通过key直接获取value
dic["First"] // 0
当然,这只是最基础的,如果需要遍历的操作,则可通过下面几种方式
遍历
首先说明,Dictionary中,key的存在是无序的,也就是说正常的遍历会得到不同顺序的结果
// 通过简单的for循环遍历
// dic中是按照key,value的形式排列的
for (key, value) in dic {
print("\(key): \(value)")
}
// 通过forEach闭包遍历
// 当$0与$1同时存在时,$0->key $1->value
dic.forEach { print("\($0): \($1)")}
// 当仅有$0存在时,$0->(key: xxx, value, xxx)
dic.forEach { print("\($0)") }
当然,如果强制要求按照固定的顺序遍历Dictionary也不是没办法,不过,就要从keys上动手脚
试想一下,如果keys的顺序每一次都是固定的,那么Dictionary其实也是固定顺序的了,下面是一个最简单的基于keys的排序实现:
for key in dic.keys.sorted() {
print("\(key): \(dic[key]!)")
}