《iOS移动开发从入门到精通》图书连载16:字典

3.4.4 字典

Swift语言提供两种集合类型来存储数据:数组和字典。数组是一个同类型的序列化列表集合。而字典是一个能够使用类似于键的唯一标识符,来获取值的非序列化集合。

字典是一种存储多个相同类型的值的容器。每个值value都关联唯一的键key。键作为字典中的这个值数据的标识符。

和数组不同的是,字典中的元素并没有具体的顺序,也就是说字典是无序存放元素的。并且和Object-C中的字典对象不同的是,在Swift语言中,在某个特定字典中可以存储的键和值,必须提前定义它们的类型,可以通过显性类型标注或者类型推断,来定义键和值的类型。这意味这字典不会因为插入了一个错误类型的值,而导致程序出错。这也意味着当您在字典中取回数值时,能够确定它的类型。

 

字典的创建

Swift的字典写法是Dictionary<KeyType,ValueType>,KeyType是您想要储存的键的数据类型,ValueType是您想要储存值的数据类型。这里的KeyType可以使用字符串String、整形Int、双精度Double、和布尔Bool类型。

1     var diallingCodes1 =Dictionary<String, String>()
2     var diallingCodes2 =["010":"北京", "021":"上海", "0592":"厦门"]

 

在第一行代码中,diallingCodes1被定义为Dictionary<String, String>()类型,即这个字典的键和值的类型都是String。由于diallingCodes1被var定义为变量,所以您可以在之后的代码中,添加或编辑它的内容。

在第二行代码中,给diallingCodes2字典对象设置了初始值。由于在初始值中的键和值的类型都是String,所以diallingCodes2的类型被推断为Dictionary<String, String>()类型。

 

字典的读取和编辑

我们可以使用下标语法,通过在字典中设置的键,获得对应的值。

1     let diallingCodes =["010":"北京", "021":"上海", "0592":"厦门"]
2     print(diallingCodes["010"])             //输出结果为:Optional("北京")

 

通过下标语法,还可以往字典中添加新的元素:

1	var diallingCodes = ["010":"北京", "021":"上海", "0592":"厦门"]
2	diallingCodes["020"] = "广东"
3	print(diallingCodes["020"])		//输出结果为:Optional("广东")


如果在下标中的键名已经存在于字典中,则会修改该键对应的值。

1     var diallingCodes =["010":"北京", "021":"上海", "0592":"厦门"]
2     diallingCodes["020"]= "广东"
3     diallingCodes["020"]= "广州"
4     print(diallingCodes["020"])             //输出结果为:Optional("广州")
 

也可以使用字典的updateValue()方法,修改指定键的值:

1     var diallingCodes =["010":"北京", "021":"上海", "0592":"福州"]
2     diallingCodes.updateValue("厦门", forKey: "0592")
5     print(diallingCodes["0592"])          //输出结果为:Optional("厦门")

 

当需要删除字典中的某对键值时,可以使用removeValueForKey()方法,或者将某个键的值设为nil,也能起到相同的作用。以下两行代码,都能在字典中删除键为"020"的键值对:

1     diallingCodes["020"]= nil
2     diallingCodes.removeValue(forKey:"020")
 

字典的遍历

您可以使用 for-in 循环,来遍历某个字典中的键或值,也可以同时遍历字典中的键值对。以下的代码中,对字典的键进行了遍历操作:

1     var diallingCodes =["010":"北京", "021":"上海", "0592":"厦门"]
2     for key in diallingCodes.keys
3     {
4         print(key)
5     }

 

通过遍历字典对象的keys属性,输出了字典中所有键的信息:

021
010
0592

 

通过访问字典对象的values属性,可以遍历字典的所有的值:

1     let diallingCodes =["010":"北京", "021":"上海", "0592":"厦门"]
2     for value indiallingCodes.values
3     {
4               print(value)
5     }

 

以下代码的输出结果为:

上海
北京
厦门

 

每一个字典中的数据项,都由(key, value)元组所组成,所以您可以使用临时常量或者变量来分解这些元组,以下代码是对字典的键值对进行遍历输出:

1     let diallingCodes =["010":"北京", "021":"上海", "0592":"厦门"]
2     for (key, value) indiallingCodes
3     {
4               print(key+":"+value)
5     }

 

代码在控制台输出的结果为:

021:上海
010:北京
0592:厦门
3.5 结语

新人学习苹果开发,完全可以放弃Objective-C,从Swift语言入手。Swift语言在3.0版本后将变得稳定起来,所以在本章为读者讲解了Swift 3.0语言的基本概念和语法,这些内容都是在进行iOS开发时必须掌握的基础知识,在开发过程中每时每刻都会使用到这些知识点。所以请熟练掌握本章的所有内容,为日后的开发工作打下坚实的基础!



酷课堂最新互动教程:《iOS开发中的神兵利器》

苹果商店免费下载:https://itunes.apple.com/cn/app/id1209739676

~ 共140节课程,讲解GitHub中近百个过千star的iOS热门开源项目
~ 市面上唯一大规模讲解GitHub中热门的iOS开源项目的教程
~ 快速、优雅地解决iOS开发工作中遇到的各种棘手问题





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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

李发展

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

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

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

打赏作者

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

抵扣说明:

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

余额充值