描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787302588641
本书以读者能够完全独立开发iOS应用为目标构建知识体系,全书分为三部分,各部分说明如下:
部分 将为读者介绍Swift语言的语法,这也是本书后面部分的基础,共12章,每1章都为读者介绍Swift语言的一些基础语法点,包括数据类型、流程控制语句、运算符、函数与闭包、枚举、结构体、类、属性与方法、对象构造与析构、内存管理、异常处理、扩展与协议以及Swift语言的新特性等。
第二部分 为iOS开发基础部分,目前Swift语言应用的主要场景是iOS应用的开发。这部分内容将系统地向读者介绍iOS 开发技能,包括独立UI控件的应用、视图界面逻辑的开发、动画与布局技术、网络与数据处理技术等。掌握了这些技能,理论上讲读者已经具备了独立开发一款iOS 应用程序的能力。本部分还介绍了Swift 5新增的SwiftUI技术,SwiftUI技术将使得软件的界面开发更加高效和容易。
第三部分 为实战部分,学习编程,实战是必经的一关。本书为读者安排了3个实战项目,项目的安排由简入难,并且各个项目的侧重点分布均匀,力图全面锻炼读者的实际开发能力。
除了循序渐进的技能学习外,在每一章的后还加入了练习题与模拟面试。练习题可以帮助读者更好地理解和掌握当前章节所学习的内容,模拟面试可以帮助读者增加实战经验,进而提高应用能力。
本书由专业的iOS开发工程师根据新发布的Swift 5.5编程语言精心编撰,书中兼备核心语法、编程技巧与应用实践3大主题。本书部分从Xcode开发工具及Swift学习环境的搭建开始,重点介绍Swift的语言特性和应用场景,提供了大量编程练习,帮助读者尽快掌握Swift语言的精髓。第二部分介绍Swift开发iOS应用的基本技能,包括独立UI控件的应用、视图界面逻辑的开发、动画与布局技术、网络与数据处理技术以及新的SwiftUI编程技术等,旨在带领读者独立开发一款iOS应用程序。第三部分为应用部分,这部分安排了实战项目(简易计算器、生活记事本、中国象棋游戏),项目的安排由简到难,旨在全面锻炼读者的实际开发能力,使用Swift进行开发实践。本书还在每一章中插入了模拟面试题,以帮助读者应对iOS开发职位的面试。 通过本书的学习,读者可以轻松地掌握使用Swift语言开发一款iOS软件从理论到实践的全部技术细节。本书适合使用Swift 开发iOS应用的新手,以及有Objective-C基础,想学习Swift 的iOS开发人员学习,也适合作为培训机构与大中专院校移动开发课程的教学用书或面试指导书。
部分 Swift语言基础语法
第1章 学习环境的搭建 3
1.1 申请个人AppleID账号 3
1.2 下载与安装Xcode开发工具 4
1.3 Xcode开发工具简介 5
1.4 使用Playground进行Swift代码演练 8
第2章 量值与基本数据类型 11
2.1 变量与常量 12
2.1.1 变量与常量的定义和使用 12
2.1.2 变量和常量的命名规范 13
2.2 关于注释 14
2.3 初识基本数据类型 15
2.3.1 数学进制与计算机存储原理 15
2.3.2 整型数据 16
2.3.3 浮点型数据 17
2.3.4 布尔型数据 17
2.4 两种特殊的基本数据类型 18
2.4.1 元组 18
2.4.2 可选值类型 19
2.5 为类型取别名 22
2.6 练习及解析 22
2.7 模拟面试 23
第3章 字符、字符串与集合类型 25
3.1 字符串类型 26
3.1.1 进行字符串的构造 26
3.1.2 字符串的组合 27
3.2 字符类型 27
3.2.1 字符类型简介 27
3.2.2 转义字符 28
3.3 字符串类型中的常用方法 29
3.4 集合类型 31
3.4.1 数组(Array)类型 32
3.4.2 集合(Set)类型 35
3.4.3 字典(Dictionary)类型 37
3.5 练习及解析 40
3.6 模拟面试 42
第4章 基本运算符与程序流程控制 44
4.1 初识运算符 45
4.1.1 赋值运算符 45
4.1.2 基本算术运算符 45
4.1.3 基本逻辑运算符 46
4.1.4 比较运算符 47
4.1.5 条件运算符 48
4.2 Swift语言中两种特殊的运算符 48
4.2.1 空合并运算符 48
4.2.2 区间运算符 49
4.3 循环结构 50
4.3.1 for-in循环结构 50
4.3.2 while与repeat-while条件循环结构 51
4.4 条件选择与多分支选择结构 52
4.4.1 if与if-else条件选择结构 52
4.4.2 switch-case多分支选择结构 53
4.5 Swift语言中的流程跳转语句 56
4.6 练习及解析 59
4.7 模拟面试 62
第5章 函数与闭包技术 64
5.1 函数的基本应用 65
5.1.1 函数的创建与调用 65
5.1.2 关于函数的参数名 66
5.1.3 函数中参数的默认值、不定数量参数与inout类型参数 68
5.2 函数的类型与函数嵌套 69
5.3 理解闭包结构 71
5.3.1 闭包的语法结构 71
5.3.2 通过实现一个排序函数来深入理解闭包 72
5.4 将闭包作为参数传递时的写法优化 74
5.5 后置闭包、逃逸闭包与自动闭包 75
5.6 练习及解析 77
5.7 模拟面试 80
第6章 高级运算符与枚举 81
6.1 位运算符与溢出运算符 82
6.1.1 位运算符的应用 82
6.1.2 溢出运算符 83
6.2 运算符的重载与自定义 84
6.2.1 重载运算符 84
6.2.2 自定义运算符 86
6.3 运算符的优先级与结合性 87
6.4 枚举类型的创建与应用 89
6.5 枚举的原始值与相关值 91
6.5.1 枚举的原始值 91
6.5.2 枚举的相关值 92
6.5.3 递归枚举 93
6.6 练习及解析 96
6.7 模拟面试 97
第7章 类与结构体 99
7.1 类与结构体的定义 99
7.1.1 结构体 100
7.1.2 类 101
7.2 设计一个交通工具类 103
7.3 开发中类与结构体的应用场景 105
7.4 练习及解析 106
7.5 模拟面试 108
第8章 属性与方法 110
8.1 存储属性与计算属性 111
8.1.1 存储属性的意义及应用 111
8.1.2 计算属性的意义及应用 113
8.2 属性监听器 115
8.3 属性包装器 116
8.4 实例属性与类属性 119
8.5 实例方法与类方法 119
8.5.1 实例方法的意义与应用 120
8.5.2 类方法 121
8.6 下标方法 122
8.7 练习及解析 124
8.8 模拟面试 124
第9章 构造方法与析构方法 126
9.1 构造方法的设计与使用 126
9.2 指定构造方法与便利构造方法 129
9.3 构造方法的继承关系 131
9.4 构造方法的安全性检查 132
9.5 可失败构造方法与必要构造方法 134
9.6 析构方法 135
9.7 练习与解析 135
9.8 模拟面试 137
第10章 内存管理与异常处理 138
10.1 自动引用计数 139
10.2 循环引用及其解决方法 141
10.3 闭包中的循环引用 146
10.4 异常的抛出与传递 147
10.5 异常的捕获与处理 148
10.6 延时执行结构 149
10.7 练习与解析 150
10.8 模拟面试 151
第11章 类型转换、泛型、扩展与协议 152
11.1 类型检查与转换 153
11.1.1 Swift语言中的类型检查 153
11.1.2 Swift语言中的类型转换 154
11.2 Any与AnyObject类型 155
11.3 泛型 156
11.3.1 初识泛型 156
11.3.2 对泛型进行约束 158
11.4 扩展与协议 160
11.4.1 使用扩展对已经存在的数据类型进行补充 160
11.4.2 协议的特点与应用 162
11.4.3 协议与扩展的结合 165
11.5 模拟面试 165
第12章 Swift的高级特性 167
12.1 内存安全检查(独占访问权限) 167
12.2 关联类型可以添加where约束子句 170
12.3 增强字符串和区间运算符的功能 170
12.4 动态成员查找与动态方法调用 172
12.5 泛型与协议功能的增强 173
12.6 模拟面试 175
第二部分 iOS开发基础
第13章 UI控件与逻辑交互(1) 179
13.1 iOS项目工程简介 180
13.1.1 创建iOS项目工程 180
13.1.2 运行个iOS程序 181
13.2 标签控件——UILabel 184
13.2.1 使用代码创建一个UILabel控件 184
13.2.2 自定义UILable控件的展示效果 185
13.2.3 定义更加丰富多彩的UILabel控件 186
13.3 按钮控件——UIButton 188
13.3.1 创建UIButton按钮控件 188
13.3.2 为按钮添加触发事件 190
13.3.3 为UIButton添加自定义图片 191
13.4 图片显示控件——UIImageView 192
13.4.1 图片类UIImage 193
13.4.2 使用UIImageView进行图片的展示 193
13.4.3 使用UIImageView播放动画 194
13.5 文本输入框控件——UITextField 196
13.5.1 创建文本输入框控件 196
13.5.2 为UITextField设置左右视图 198
13.5.3 UITextField控件的代理方法 199
13.6 开关控件UISwitch 201
13.7 分页控制器——UIPageControl 203
13.8 分部控制器——UISegmentedControl 204
13.8.1 创建分布控制器控件 204
13.8.2 UISegmentedControl控件中按钮的增、删、改操作 205
13.8.3 关于UISegmentedControl控件中按钮的尺寸问题 206
13.9 模拟面试 207
第14章 UI控件与逻辑交互(2) 208
14.1 滑块控件UISlider 208
14.1.1 UISlider控件的创建与设置 209
14.1.2 UISlider控件的外观自定义与用户交互 209
14.2 活动指示器控件UIActivityIndicatorView 211
14.3 进度条控件UIProgressView 212
14.4 步进器控件UIStepper 213
14.5 选择器控件UIPickerView 215
14.6 时间选择器控件UIDataPicker 219
14.7 搜索栏控件UISearchBar 221
14.7.1 创建UISearchBar控件 221
14.7.2 UISearchBar控件的更多功能按钮 224
14.7.3 UISearchBar控件的附件视图 225
14.7.4 UISearchBarDelegate协议详解 226
14.8 模拟面试 227
第15章 视图控制器与高级UI视图控件 229
15.1 应用程序的界面管理器UIViewController 230
15.1.1 关于MVC设计模式 230
15.1.2 UIViewController的生命周期 231
15.1.3 UIViewController之间的切换与传值 232
15.2 导航视图控制器UINavigationController 238
15.2.1 理解导航结构 238
15.2.2 搭建使用导航结构的项目 238
15.2.3 对导航栏进行自定义设置 240
15.2.4 使用导航进行视图控制器的切换管理 243
15.3 标签栏控制器UITabBarController 244
15.3.1 创建以UITabBarController为项目结构的工程 244
15.3.2 对UITabBarController中的标签进行自定义配置 247
15.3.3 标签栏上标签的溢出与排序功能 249
15.4 警告视图控制器的应用 251
15.4.1 认识UIAlertAction类 251
15.4.2 使用UIAlertController创建警告框弹窗 252
15.4.3 使用UIAlertController创建抽屉弹窗 254
15.5 网页视图的应用 254
15.5.1 网页视图UIWebView 255
15.5.2 认识WebKit框架 258
15.5.3 使用WKWebViewConfiguration对网页视图进行配置 259
15.5.4 WKWebView中重要的属性和方法解析 261
15.5.5 关于WKUIDelegate协议 262
15.6 滚动视图UIScrollView的应用 263
15.6.1 创建UIScrollView滚动视图 263
15.6.2 UIScrollViewDelegate协议介绍 265
15.6.3 UIScrollView的缩放操作 266
15.7 列表视图UITableView的应用 267
15.7.1 创建UITableView列表 267
15.7.2 进行数据载体UITableViewCell的自定义 271
15.7.3 UITableView的编辑模式 274
15.7.4 为UITableView添加索引栏 277
15.8 集合视图UICollectionView的应用 279
15.8.1 使用UICollectionView实现简单的九宫格布局 279
15.8.2 使用FlowLayout进行更加灵活的九宫格布局 281
15.8.3 实现炫酷的瀑布流布局 283
15.9 模拟面试 286
第16章 动画与界面布局技术 288
16.1 使用UIView层动画实现属性渐变效果 289
16.1.1 UIView层的属性过渡动画 289
16.1.2 UIView层的转场动画 292
16.2 通过GIF文件播放动画 294
16.2.1 使用原生的UIImageView来播放GIF动态图 294
16.2.2 使用UIWebView进行GIF动态图的播放 296
16.3 iOS开发中的CoreAnimation核心动画技术 297
16.3.1 初识CoreAnimation框架 297
16.3.2 锚点对视图几何属性的影响 297
16.3.3 几种常用的CALayer子类介绍 298
16.3.4 CoreAnimation框架中的属性动画介绍 302
16.3.5 CoreAnimation框架中的转场动画与组合动画 303
16.4 炫酷的粒子效果 305
16.4.1 粒子发射引擎与粒子单元 305
16.4.2 创建火焰粒子效果 307
16.5 Autolayout自动布局技术 309
16.5.1 使用Storyboard或者XIB文件进行界面的自动布局 309
16.5.2 进行视图间的约束布局 312
16.5.3 使用原生代码进行Autolayout自动布局 313
16.5.4 使用第三方框架SnapKit进行Autolayout自动布局 316
16.6 使用Autolayout创建自适应高度的UITextView输入框 318
16.7 模拟面试 319
第17章 网络与数据存储技术 321
17.1 获取互联网上公开API所提供的数据 321
17.1.1 注册天行API会员 322
17.1.2 进行API接口测试 322
17.1.3 关于JSON数据格式 323
17.2 在iOS开发中进行网络数据请求 324
17.2.1 关于HTTP网络请求协议 325
17.2.2 使用URLSesstion进行网络请求 325
17.3 使用UserDefaults进行简单数据的持久化存储 327
17.3.1 使用UserDefaults与Plist文件进行常见类型数据的存储 328
17.3.2 使用Plist文件进行数据持久化处理 329
17.4 iOS开发中的归档技术应用 331
17.4.1 对简单数据类型的归档操作 331
17.4.2 对自定义数据类型进行归档操作 333
17.5 数据库在iOS开发中的应用 334
17.5.1 操作数据库常用语句 334
17.5.2 可视化数据库管理工具MesaSQLite的简单应用 337
17.5.3 libsqlite3数据库操作库简介 338
17.5.4 在iOS工程中调用libsqlite3库操作数据库 340
17.6 使用CoreData框架进行数据管理 344
17.6.1 使用CoreData框架进行数据模型设计 344
17.6.2 使用CoreData进行数据的添加与查询操作 346
17.7 模拟面试 348
第18章 SwiftUI技术 349
18.1 视图的布局方式 349
18.1.1 SwiftUI布局初体验 350
18.1.2 使用图片组件 353
18.1.3 在SwiftUI中使用UIKit中的组件 354
18.2 SwiftUI中的列表视图 354
18.2.1 编写行视图 354
18.2.2 将数据关联到视图 355
18.2.3 构建列表视图 356
18.3 使用导航进行页面跳转 357
18.4 处理用户交互 360
18.4.1 SwiftUI中的按钮组件 360
18.4.2 SwiftUI中的状态 361
18.4.3 使用环境对象 362
18.5 SwiftUI自定义绘制 363
18.5.1 图形绘制 363
18.5.2 设置绘制属性 365
18.5.3 简单的图形变换与组合 367
18.6 SwiftUI中的动画技术 368
18.6.1 属性动画 368
18.6.2 转场动画 369
18.7 模拟面试 370
第三部分 实战
第19章 实战一:简易计算器 373
19.1 计算器按键与操作面板的封装 373
19.2 计算器显示板输入显示的逻辑开发 377
19.3 计算器计算逻辑的设计 381
19.4 为应用添加图标与启动页 384
第20章 实战二:点滴生活记事本 386
20.1 项目工程的搭建 386
20.2 主页记事分组视图的开发 389
20.3 添加分组功能的开发 392
20.4 数据库引入与记事分组信息的持久化 394
20.5 记事列表界面的搭建 396
20.6 新建记事功能的开发 399
20.7 更新记事与删除记事功能的开发 406
第21章 实战三:《中国象棋》游戏 411
21.1 项目工程的搭建与音频模块的开发 411
21.2 《中国象棋》棋子控件的开发 415
21.3 《中国象棋》棋盘控件的开发 418
21.4 “兵”与“卒”行棋逻辑的开发 422
21.5 “将”与“士”相关棋子行棋逻辑的开发 429
21.6 “象”与“马”相关棋子行棋逻辑的开发 432
21.7 “车”与“炮”棋子行棋逻辑的开发 437
21.8 胜负判定逻辑开发与游戏功能完善 441
21.9 拆分冗长的checkCanMove()方法 446
附录A CocoaPods库管理工具的应用 454
附录B 关键概念检索表 458
自2014年Apple在全球开发者大会上发布了Swift编程语言,至今已经经历了5个大版本的迭代,随着Swift语言的更新与完善,开发者对其的热情也越来越高,越来越多的公司在开发iOS软件项目时都将Swift作为先选择的编程语言。
从版Swift语言的发布开始,我就一直对这门新兴的编程语言有着浓厚的兴趣,几年前,当我次收到清华大学出版社王金柱编辑的邀请,建议写一本帮助新手入门Swift语言iOS开发的工具书时,忐忑的心情至今还记忆犹新。经过再三的考虑与矛盾,我终决定接下这个任务。当然,不是我对自己的编程技能充满信心,只是觉得把学习过程中遇到的问题、走过的弯路、积累的经验整理成册提供给初学者是一件非常有意义的事情。后来经过半年多的努力,《Swift 3从入门到精通》顺利出版并且得到了不错的回应。尽管在写作的过程中充满了艰辛,但是看到自己的作品可以给读者带来切实的帮助,我也收获到了额外的喜悦与慰藉。后来,在各位读者的帮助下,我对书中出现的错误与不合理之处进行了多次纠正与优化,《Swift 4从入门到精通》得以与读者相见。
截至本书完稿,Swift编程语言已经更新到5.5版本,其间Swift语言改变了很多,也优化了很多,从1.0到3.0版本,Swfit语言经历了质的变化,从3.0到5.0版本,Swift语言也迎来了完善与稳定。Swift语言是少有的在短时间内大版本更迭的编程语言,这也体现了这门语言不拘一格、大胆创新的特点。本书在《Swift 4从入门到精通》的基础上,优化了部分过时的内容,新增了Swift 5.5的新特性与SwiftUI技术的内容,更重要的是,总结了《Swift 4从入门到精通》一书读者的反馈,本书中的内容更加面向应用,并且插入了大量的面试题,并做了试题解析与面试指导。
本书分为三大部分。
部(第1~12章)将为读者介绍Swift语言的一些基础语法点,包括数据类型、流程控制语句、运算符、函数与闭包、枚举、结构体、类、属性与方法、对象构造与析构、内存管理、异常处理、扩展与协议以及Swift语言的新特性等。这12章内容将竭力为读者介绍Swift语言的语法特点与应用场景,并且每一章后面都附带有习题,供读者对本章所学的知识进行测试与应用。
第二部分(第13~18章)为iOS开发基础部分,目前Swift语言应用的主要场景为iOS应用的开发。这部分内容将系统地向读者介绍iOS的开发技能,包括独立UI控件的应用、视图界面逻辑的开发、动画与布局技术、网络与数据处理技术等。掌握了这些技能,理论上读者已经具备独立开发一款iOS 应用程序的能力。与《Swift 4从入门到精通》一书不同的是,本书中新增了SwiftUI章节,SwiftUI技术将使得软件的界面开发更加容易。
第三部分(第19~21章)为实战部分,学习编程,实战是必经的一关。本书为读者安排了3个实战项目,项目的安排由简入难,并且各个项目的侧重点分布均匀,力图全面锻炼读者的实际开发能力。
除了三大部分循序渐进的技能学习外,在每一章的后都加入了练习题与模拟面试。练习题可以帮助读者更好地理解和掌握当前章节所学习的内容,模拟面试可以帮助读者增加实战经验,进而提高应用能力。
本书是一本从基础到实战的Swift编程语言学习教程。如果你符合下面的特点,那么本书就是为你定制的:
(1)对iOS系统软件开发感兴趣,想要从事iOS软件开发的人员。
(2)对编程感兴趣,对Swift编程语言感兴趣的人员。
(3)熟悉Objective-C语言,想要尝试Swift语言的开发者。
(4)需要进行面试指导的Swift求职者。
此外,本书还提供了全部源代码,以方便读者上机演练,读者扫描以下二维码即可下载:
如果你在下载过程中遇到问题,可发送邮件至[email protected]获得帮助,邮件标题为“Swift 5从零到精通iOS开发训练营”。
编程是一门动手性很强的技能,因此在学习本书时,读者首先需要搭建好自己的开发环境(本书第1章有介绍)。在学习书中内容时要对照代码进行实际操作,并且本书的配套资源中也有书中所引用的全部代码,读者在学习时可以进行参考对照。如果读者没有良好的Swift语言基础,在学习本书时,请务必根据章节的顺序安排进行学习,只有有了良好的语言基础,学习后面章节的时候才能得心应手。
本书能够顺利完成,首先要感谢家人对我写作的支持,感谢朋友们的无私帮助。重要的是感谢清华大学出版社的王金柱编辑,王金柱编辑耐心地纠正了我许多写作中的问题,并且给了我许多非常有价值的建议,指导我完成了本书的编写。没有他的辛勤付出,本书不会出现在读者的面前。后,感谢所有读者,我们都是编程路途中的学习者,你们的努力和认可让我坚定不移地去做分享知识这件有意义的事,希望我们能够一起努力,一起前进!
编 者
2021年6月27日
评论
还没有评论。