第一部分 基础知识
第1章 Swift简介 2
1.1 革命性的改良 2
1.2 准备工作 3
1.2.1 专业工具 3
1.2.2 与Swift交互 3
1.3 准备出发 4
1.4 开始探索Swift 6
1.4.1 帮助和退出 6
1.4.2 Hello World 6
1.5 声明的威力 7
1.6 常量 9
1.7 类型 10
1.7.1 检查上限和下限 11
1.7.2 类型转换 11
1.7.3 显式地声明类型 12
1.8 字符串 13
1.8.1 字符串拼接 13
1.8.2 Character类型 14
1.9 数学运算符 14
1.9.1 表达式 15
1.9.2 混用不同的数值类型 15
1.9.3 数值表示 16
1.10 布尔类型 17
1.11 轻松显示 18
1.12 使用类型别名 19
1.13 使用元组将数据编组 19
1.14 可选类型 20
1.15 小结 22
第2章 使用集合 23
2.1 糖果罐 23
2.1.1 数组中所有元素的类型都必须相同 26
2.1.2 增长数组 26
2.1.3 替换和删除值 27
2.1.4 将值插入到指定位置 28
2.1.5 合并数组 29
2.2 字典 30
2.2.1 查找条目 31
2.2.2 添加条目 32
2.2.3 更新条目 33
2.2.4 删除条目 33
2.3 数组的数组 34
2.4 创建空数组和空字典 36
2.4.1 空数组 36
2.4.2 空字典 37
2.5 迭代集合 38
2.5.1 迭代数组 38
2.5.2 迭代字典 39
2.6 小结 40
第3章 流程控制 41
3.1 for循环 41
3.1.1 计数 41
3.1.2 包含还是不包含结束数字 42
3.1.3 老式for循环 43
3.1.4 简写 44
3.2 游乐场 45
3.3 决策 48
3.3.1 if语句 48
3.3.2 检查多个条件 52
3.3.3 switch语句 53
3.3.4 while循环 56
3.3.5 检查代码 58
3.3.6 提早结束循环 61
3.4 小结 61
第4章 编写函数和闭包 62
4.1 函数 62
4.1.1 使用Swift编写函数 63
4.1.2 执行函数 64
4.1.3 参数并非只能是数字 65
4.1.4 可变参数 66
4.1.5 函数是一级对象 69
4.1.6 从函数返回函数 71
4.1.7 嵌套函数 73
4.1.8 默认参数 76
4.1.9 函数名包含哪些内容 77
4.1.10 清晰程度 79
4.1.11 用不用外部参数名 80
4.1.12 变量参数 81
4.1.13 inout参数 84
4.2 闭包 86
4.3 小结 88
4.4 类 89
第5章 使用类和结构组织代码 90
5.1 对象处不在 90
5.2 Swift对象是使用类定义的 91
5.2.1 定义类 91
5.2.2 创建对象 93
5.2.3 开门和关门 93
5.2.4 锁门和开锁 94
5.2.5 查看属性 96
5.2.6 门应是各式各样的 97
5.2.7 修改颜色 99
5.3 继承 99
5.3.1 创建基类 100
5.3.2 创建子类 103
5.3.3 实例化子类 104
5.3.4 便利初始化方法 109
5.3.5 枚举 111
5.3.6 结构 113
5.3.7 值类型和引用类型 114
5.4 小结 116
第6章 使用协议和扩展进行规范化 117
6.1 遵循协议 117
6.1.1 类还是协议 117
6.1.2 协议并非只能定义方法 119
6.1.3 遵循多个协议 121
6.1.4 协议也可继承 122
6.1.5 委托 123
6.2 扩展 126
6.2.1 扩展基本类型 127
6.2.2 在扩展中使用闭包 130
6.3 小结 132
第二部分 使用Swift开发软件
第7章 使用Xcode 134
7.1 Xcode简史 134
7.2 创建第一个Swift项目 135
7.3 Xcode界面 136
7.3.1 与Xcode窗口交互 138
7.3.2 运行应用程序 139
7.4 开发应用程序 140
7.4.1 腾出空间 141
7.4.2 创建界面 142
7.4.3 美化 145
7.4.4 编写代码 146
7.4.5 建立连接 149
7.5 小结 151
第8章 改进应用程序 152
8.1 细节很重要 152
8.1.1 显示金额 152
8.1.2 再谈可选类型 154
8.1.3 可选类型拆封 154
8.1.4 美化 155
8.1.5 另一种格式设置方法 156
8.2 计算复利 159
8.2.1 连接起来 161
8.2.2 测试 164
8.3 调试 164
8.3.1 bug在哪里 164
8.3.2 断点 165
8.3.3 复杂的复利计算 168
8.4 测试的价值 169
8.4.1 单元测试 169
8.4.2 编写测试 169
8.4.3 如果测试未通过 172
8.4.4 始终运行的测试 173
8.5 小结 174
第9章 Swift移动开发 175
9.1 移动设备和台式机 175
9.2 挑战记忆力 175
9.2.1 考虑玩法 176
9.2.2 设计UI 176
9.3 创建项目 177
9.4 创建用户界面 179
9.4.1 创建按钮 180
9.4.2 在模拟器中运行 182
9.4.3 设置约束 183
9.5 MVC 186
9.6 编写游戏代码 186
9.6.1 类 189
9.6.2 枚举 190
9.6.3 视图对象 190
9.6.4 模型对象 190
9.6.5 可重写的方法 191
9.6.6 游戏的方法 191
9.6.7 处理输赢 195
9.7 回到故事板 196
9.8 开玩 198
第10章 其他主题 199
10.1 Swift内存管理 199
10.1.1 值和引用 199
10.1.2 引用计数 200
10.1.3 引用循环 200
10.1.4 演示引用循环 201
10.1.5 编写测试代码 202
10.1.6 断开引用循环 204
10.1.7 闭包中的引用循环 205
10.1.8 感恩 207
10.2 逻辑运算符 207
10.2.1 逻辑非 207
10.2.2 逻辑与 208
10.2.3 逻辑或 208
10.3 泛型 209
10.4 运算符重载 210
10.5 相等和相同 213
10.6 Swift脚本编程 214
10.6.1 编辑脚本 215
10.6.2 设置权限 216
10.6.3 运行脚本 216
10.6.4 工作原理 216
10.7 获取帮助 218
10.8 独闯江湖 219
10.8.1 研究苹果公司提供的框架 219
10.8.2 加入苹果开发者计划 220
10.8.3 成为社区的一分子 220
10.8.4 活到老学到老 220
10.8.5 一路平安 220
展开