内容简介
第一部分 起步
第1章 起步
1.1 Xcode起步
1.2尝试playground
1.3修改变量并打印信息到控制台
1.4继续前进
1.5青铜挑战练习
第2章 类型、常量和变量
2.1类型
2.2常量与变量
2.3字符串插值
2.4青铜挑战练习
第二部分 基础知识
第3章 条件语句
3.1 if/else
3.2三目运算符
3.3嵌套的i f
3.4 else if
3.5青铜挑战练习
第4章数
4.1整数
4.2创建整数实例
4.3整数操作符
4.3.1整数除法
4.3.2快捷操作符
4.3.3溢出操作符
4.4转换整数类型
4.5浮点数
4.6青铜挑战练习
第5章switch语句
5.1什么是switch
5.2开始使用switch
5.2.1区间
5.2.2值绑定
5.2.3 where子句
5.2.4元组和模式匹配
5.3 switch与if/else
5.4青铜挑战练习
5.5白银挑战练习
第6章 循环
6.1 for-in循环
6.2类型推断概述
6.3 while循环
6.4 repeat-while循环
6.5重提控制转移语句
6.6白银挑战练习
第7章 字符串
7.1使用字符串
7.2 Unicode
7.2.1 Unicode标量
7.2.2标准等价
7.3青铜挑战练习
7.4白银挑战练习
第8章 可空类型
8.1可空类型
8.2可空实例绑定
8.3隐式展开可空类型
8.4可空链式调用
8.5原地修改可空实例
8.6 nil合并运算符
8.7青铜挑战练习
8.8白银挑战练习
第三部分 容器和函数
第9章 数组
9.1创建数组
9.2访问和修改数组
9.3数组相等
9.4不可变数组
9.5文档
9.6青铜挑战练习
9.7白银挑战练习
9.8黄金挑战练习
第10章 字典
10.1创建字典
10.2填充字典
10.3访问和修改字典
10.4增加和删除值
10.5循环
10.6不可变字典
10.7把字典转换为数组
10.8白银挑战练习
10.9黄金挑战练习
第11章 集合
11.1什么是集合
11.2创建集合
11.3运用集合
11.3.1并集
11.3.2交集
11.3.3不相交
11.4青铜挑战练习
11.5白银挑战练习
第12章 函数
12.1一个基本的函数
12.2函数参数
12.2.1参数名字
12.2.2变长参数
12.2.3默认参数值
12.2.4 in-out参数
12.3从函数返回
12.4嵌套函数和作用域
12.5多个返回值
12.6可空返回值类型
12.7提前退出函数
12.8函数类型
12.9青铜挑战练习
12.10白银挑战练习
12.11深入学习:Void
第13章 闭包
13.1闭包的语法
13.2闭包表达式语法
13.3函数作为返回值
13.4函数作为参数
13.5闭包能捕获变量
13.6闭包是引用类型
13.7函数式编程
13.8青铜挑战练习
13.9青铜挑战练习
13.10黄金挑战练习
第四部分 枚举、结构体和类
第14章 枚举
14.1基本枚举
14.2原始值枚举
14.3方法
14.4关联值
14.5递归枚举
14.6青铜挑战练习
14.7白银挑战练习
第15章 结构体和类
15.1新工程
15.2结构体
15.3实例方法
15.4 mutating方法
15.5类
15.5.1 Monster类
15.5.2继承
15.6应该用哪种类型
15.7青铜挑战练习
15.8白银挑战练习
15.9深入学习:类型方法
15.10深入学习:mutating方法
第16章 属性
16.1基本的存储属性
16.2嵌套类型
16.3惰性存储属性
16.4计算属性
16.5属性观察者
16.6类型属性
16.7访问控制
16.8青铜挑战练习
16.9白银挑战练习
16.10黄金挑战练习
第17章 初始化
17.1初始化方法语法
17.2结构体初始化
17.2.1结构体的默认初始化方法
17.2.2结构体的自定义初始化方法
17.3类初始化
17.3.1类的默认初始化方法
17.3.2初始化和类继承
17.3.3类的必需初始化方法
17.3.4反初始化
17.4可失败的初始化方法
17.5掌握初始化
17.6白银挑战练习
17.7黄金挑战练习
17.8深入学习:初始化方法参数
第18章 值类型与引用类型
18.1值语义
18.2引用语义
18.3值类型常量和引用类型常量
18.4配合使用值类型和引用类型
18.5复制
18.6相等与同一
18.7我应该用什么
18.8深入学习:写时复制
第五部分Swift高级编程
第19章 协议
19.1格式化表格数据
19.2协议
19.3符合协议
19.4协议继承
19.5协议组合
19.6 mutating方法
19.7白银挑战练习
19.8黄金挑战练习
第20章 错误处理
20.1错误分类
20.2对输入字符串做词法分析
20.3捕获错误
20.4解析符号数组
20.5用鸵鸟政策处理错误
20.6 Swift的错误处理哲学
20.7青铜挑战练习
20.8白银挑战练习
20.9黄金挑战练习
第21章 扩展
21.1扩展已有类型
21.2扩展自己的类型
21.2.1用扩展使类型符合协议
21.2.2用扩展添加初始化方法
21.2.3嵌套类型和扩展
21.2.4扩展中的函数
21.3青铜挑战练习
21.4青铜挑战练习
21.5白银挑战练习
第22章 泛型
22.1泛型数据结构
22.2泛型函数和方法
22.3类型约束
22.4关联类型协议
22.5类型约束中的where子句
22.6青铜挑战练习
22.7白银挑战练习
22.8黄金挑战练习
22.9深入学习:理解可空类型
22.10深入学习:参数多态
第23章 协议扩展
23.1为锻炼建模
23.2扩展Exercise
23.3带where子句的协议扩展
23.4用协议扩展提供默认实现
23.5关于命名:一个警世故事
23.6青铜挑战练习
23.7黄金挑战练习
第24章 内存管理和ARC
24.1内存分配
24.2循环强引用
24.3用weak打破循环强引用
24.4闭包中的循环引用
24.5逃逸闭包和非逃逸闭包
24.6青铜挑战练习
24.7白银挑战练习
24.8深入学习:我能获取实例的引用计数吗
第25章Equatable和Comparable
25.1符合Equatable
25.1.1插曲:中缀运算符
25.1.2方法“买一赠一”
25.2符合Comparable
25.3继承Comparable
25.4青铜挑战练习
25.5黄金挑战练习
25.6白金挑战练习
25.7深入学习:自定义运算符
第六部分 事件驱动的应用
第26章 第一个Cocoa应用
26.1开始创建VocalTextEdit
26.2模型-视图-控制器
26.3设置视图控制器
26.4在Interface Builder中设置视图
26.4.1添加朗读和停止按钮
26.4.2添加文本视图
26.4.3自动布局
26.5连接
26.5.1为VocalTextEdit的按钮设置目标-动作对
26.5.2连接文本视图出口
26.6让VocalTextEdit“说话”
26.7保存和加载文档
26.7.1类型转换
26.7.2保存文档
26.7.3加载文档
26.7.4按照MVC模式整理代码
26.7.5现实世界中的Swift
26.8白银挑战练习
26.9黄金挑战练习
第27章 第一个iOS应用
27.1开始创建iTahDoodle
27.2布局用户界面
27.3为待办事项列表建模
27.4设置UITableView
27.5保存和加载TodoList
27.5.1保存TodoList
27.5.2加载TodoList
27.6青铜挑战练习
27.7白银挑战练习
27.8黄金挑战练习
第28章 互操作
28.1一个Objective-C工程
28.2在Objective-C工程中加入Swift
28.3添加Objective-C类
28.4白银挑战练习
28.5黄金挑战练习
第29章 结语
29.1接下来学习什么
29.2插个广告
29.3邀请