第一部分 基础语法篇 1
第1章Hello Swift 3
1.1 Swift简介 3
1.1.1 Swift语言简介 3
1.1.2 Swift语言开发平台 3
1.1.3 Swift语言开发工具 3
1.1.4 Swift语言开发文档 5
1.2 Swift语言编程体验 7
1.2.1 Hello, 51 Code程序 7
1.2.2演练利器Playground 9
1.3本章小结 11
1.4思考练习 11
第2章 变量和基本数据类型 12
2.1 Swift语言基础语法 12
2.1.1标识符 12
2.1.2关键字 12
2.1.3表达式 13
2.1.4语句 13
2.2常量和变量 14
2.2.1常量 14
2.2.2变量 15
2.3数据类型 15
2.3.1布尔型 15
2.3.2整型 16
2.3.3浮点型 17
2.3.4字符串型 18
2.3.5数据类型的转换 18
2.3.6元组型 20
2.3.7可选型 21
2.4本章小结 23
2.5思考练习 23
第3章 常见运算符和表达式 24
3.1算术运算符 24
3.2赋值运算符 24
3.3关系运算符 25
3.4逻辑运算符 25
3.5三元运算符 25
3.6 Nil Coalescing运算符 26
3.7复合表达式 26
3.8本章小结 27
3.9思考练习 27
第4章 流程控制语句 28
4.1循环语句 28
4.1.1 for-in语句 28
4.1.2 while语句 29
4.1.3 repeate-while语句 30
4.2分支语句 30
4.2.1 if语句 30
4.2.2 switch语句 32
4.2.3在switch语句中使用范围匹配 34
4.2.4在switch语句中比较元组型 34
4.3控制转移语句 35
4.3.1 continue语句 35
4.3.2 break语句 37
4.3.3 fallthrough语句 38
4.4流程嵌套 38
4.5本章小结 39
4.6思考练习 39
第5章 字符和字符串 40
5.1 Swift语言中的字符 40
5.2字符串常见操作 41
5.2.1字符串长度 41
5.2.2字符串比较 41
5.2.3字符串前缀和后缀判断 42
5.2.4字符串的字符大小写转换 42
5.2.5字符串插入 43
5.2.6字符串添加 43
5.2.7字符串删除 43
5.2.8字符串提取 44
5.2.9字符串替换 45
5.2.10遍历字符串 45
5.3 String与NSString关系 46
5.4本章小结 47
5.5思考练习 47
第6章Collection类型 48
6.1数组 48
6.1.1数组的创建 48
6.1.2数组的访问 49
6.1.3数组的编辑 51
6.1.4数组的复制 52
6.1.5 Array与NSArray的关系 53
6.2字典 53
6.2.1字典的创建 53
6.2.2字典的访问 54
6.2.3字典的编辑 55
6.2.4字典的复制 57
6.2.5 Dictionary与NS Dictionary的关系 57
6.3集合 58
6.3.1集合的创建 58
6.3.2集合的访问 58
6.3.3集合的编辑 59
6.3.4集合的关系 60
6.4本章小结 61
6.5思考练习 61
第7章 函数和闭包 62
7.1函数的声明和调用 62
7.2函数参数 63
7.2.1无参函数 63
7.2.2含参函数 63
7.2.3函数参数标签和参数名 63
7.2.4参数默认值 64
7.2.5可变参数 65
7.2.6参数的传递引用 65
7.3函数返回值 66
7.3.1无返回值函数 66
7.3.2有返回值函数 67
7.4函数类型 68
7.4.1作为参数类型使用 68
7.4.2作为返回值类型使用 69
7.5内嵌函数 69
7.6泛型和泛型函数 70
7.6.1泛型要解决的问题 70
7.6.2泛型函数 70
7.7闭包的概念 71
7.8闭包表达式 73
7.8.1类型推断简化 73
7.8.2省略return关键字 74
7.8.3使用位置参数简化闭包书写 75
7.8.4使用闭包返回值 76
7.9尾随闭包 76
7.10捕获上下文的常量和变量 77
7.11逃逸闭包 78
7.12自动闭包 79
7.13本章小结 80
7.14思考练习 80
第二部分 面向对象篇 81
第8章 枚举 83
8.1 Swift的面向对象 83
8.2枚举类型 84
8.2.1枚举定义 84
8.2.2枚举的方法 84
8.3值枚举 86
8.3.1成员值 86
8.3.2原始值 87
8.3.3哈希值 88
8.4类型枚举 89
8.5本章小结 90
8.6思考练习 90
第9章 结构体 91
9.1结构体的定义 91
9.2结构体属性 91
9.2.1实例属性 92
9.2.2懒加载实例属性 92
9.2.3计算属性 93
9.2.4静态属性 94
9.3结构体的属性监听 95
9.4结构体的方法 96
9.4.1实例方法 97
9.4.2静态方法 97
9.5下标 98
9.6结构体的构造器 99
9.6.1默认构造器 99
9.6.2构造器参数 100
9.6.3指定构造器和便利构造器 101
9.7结构体嵌套 102
9.8可选链 102
9.9扩展 104
9.9.1声明扩展 105
9.9.2扩展计算属性 105
9.9.3扩展方法 106
9.9.4扩展构造器 107
9.10本章小结 107
9.11思考练习 107
第10章类 108
10.1类和结构体的区别 108
10.2类的属性 110
10.2.1实例属性 111
10.2.2懒加载实例属性 111
10.2.3计算属性 111
10.2.4类的属性监听 112
10.2.5类的静态属性 113
10.3类的方法 113
10.3.1类的实例方法 114
10.3.2类的静态方法 114
10.4类的继承和多态 115
10.4.1类的继承 115
10.4.2类的重写 116
10.4.3类的重载 119
10.5类的构造和析构 120
10.5.1类的构造 120
10.5.2类的析构 123
10.6类的类型检测和转换 123
10.6.1类型检测 124
10.6.2类型转换 125
10.6.3 Any和AnyObject转换 126
10.7类对象的内存管理 127
10.7.1内存管理概述 127
10.7.2强引用循环 128
10.7.3打破强引用循环 129
10.7.4闭包中的强引用循环 132
10.8本章小结 134
10.9思考练习 134
第11章 协议与抽象类型 135
11.1协议 135
11.1.1声明和遵守协议 135
11.1.2协议属性 136
11.1.3协议方法 137
11.2抽象类型 139
11.3扩展中声明协议 141
11.4本章小结 142
11.5思考练习 142
第三部分 错误处理篇 143
第12章 错误处理 145
12.1错误抛出 145
12.2错误的捕捉和处理 147
12.3错误与可选值 148
12.4拦截错误传导 148
12.5收尾操作 148
12.6本章小结 149
12.7思考练习 149
第四部分Swift与Objective-C对比篇 151
第13章Swift与Objective-C 153
13.1 Swift与Objective-C对比 153
13.2 Swift 工程中调用Objective-C 153
13.3本章小结 155
13.4思考练习 155
第14章 链式编程 156
14.1链式编程 156
14.2链式编程的应用 157
14.3本章小结 159
14.4思考练习 159
第五部分 项目实战篇 161
第15章Swift项目实战——汽车商城 163
15.1项目需求分析 163
15.1.1项目功能需求 163
15.1.2项目界面设计 164
15.2项目架构搭建 165
15.2.1架构设计 165
15.2.2创建项目 165
15.2.3搭建架构 167
15.3业务逻辑实现 168
15.3.1启动页模块 169
15.3.2首页模块 171
15.3.3地图模块 181
15.3.4发现模块 184
15.4本章小结 195
15.5思考练习 196
第16章iOS应用开发的测试 197
16.1 iOS测试框架 197
16.2 XCTest测试框架 197
16.2.1添加XCTest测试框架 197
16.2.2 XCTest测试方法 200
16.3使用XCTest进行测试 201
16.3.1常用测试工具 201
16.3.2单元测试 202
16.3.3 UI 测试 203
16.4本章小结 204
16.5思考练习 204
附录 205