第一部分 Xcode和Swift 1
第1章 Hello,world! 3
1.1 安装Xcode,你的代码编辑器 4
1.2 你的第一个App! 5
1.2.1 介绍故事板 9
1.2.2 从对象库加入用户界面元素 10
1.2.3 保存你的工作 13
1.3 在实际的设备上运行这个App 14
1.4 我们学到了什么 16
第2章 学习在playground中编程 17
2.1 常量和变量 19
2.1.1 何时该使用常量或变量 21
2.1.2 给常量和变量起名字 22
2.2 数据类型 22
2.2.1 声明数据类型 23
2.2.2 常用数据类型 24
2.2.3 类型推断 25
2.2.4 用类型转换来改变数据类型 26
2.3 运算符 27
2.3.1 计算的顺序 30
2.3.2 带括号的计算顺序 31
2.3.3 复合赋值运算符 31
2.4 我们学到了什么 33
第3章 做选择 35
3.1 布尔表达式 36
3.1.1 相等和不相等 36
3.1.2 大于和小于 37
3.1.3 复合布尔表达式 38
3.2 条件语句 40
3.2.1 if语句 40
3.2.2 switch语句 43
3.3 我们学到了什么 45
第4章 写重复执行的代码 47
4.1 打开调试区域 47
4.2 用for-in在一段范围内或一个容器内循环 48
4.2.1 说你好! 48
4.2.2 说早上好! 49
4.3 测试条件的while循环 50
4.3.1 猜数 51
4.3.2 缩短字符串 52
4.4 用哪个循环? 53
4.5 嵌套和作用域 54
4.5.1 嵌套的代码块 54
4.5.2 常量和变量的作用域 55
4.6 我们学到了什么 57
第5章 可选值能让程序更安全 59
5.1 什么是可选值? 59
5.2 创建可选值 60
5.2.1 可选值 61
5.2.2 特殊的运算符:?? 65
5.3 我们学到了什么 65
第6章 在字典和数组中保存成批数据 67
6.1 用数组有序保存数据 67
6.1.1 可写和不可写的数组 68
6.1.2 类型推断 68
6.1.3 访问数组中的元素 69
6.1.4 小心范围 69
6.1.5 向数组中添加元素 70
6.1.6 合并数组 71
6.1.7 从数组中删除元素 71
6.1.8 替换数组中的元素 72
6.1.9 使用数组的属性 73
6.1.10 循环遍历数组 74
6.2 字典是关键! 75
6.2.1 初始化字典 75
6.2.2 访问字典中的值 76
6.2.3 往字典里添加元素 77
6.2.4 从字典中删除元素 77
6.2.5 替换字典中的元素 78
6.2.6 使用字典的属性 78
6.2.7 遍历字典 79
6.3 我们学到了什么 80
第7章 函数是场聚会,邀请你来参加 81
7.1 输入和输出 81
7.2 编写自定义的函数 82
7.3 有参数的函数更强大 83
7.3.1 制作聚会邀请信 84
7.3.2 一次性邀请所有的朋友 86
7.3.3 通知客人 87
7.4 参数标签 89
7.4.1 添加自定义参数标签 90
7.4.2 删除参数标签 91
7.5 返回值 91
7.5.1 哪个盒子大? 91
7.5.2 条件返回 92
7.6 我们学到了什么 94
第8章 自定义类和结构 95
8.1 创建类 96
8.1.1 类的定义 96
8.1.2 在属性中保存数据 97
8.1.3 创建类的实例 97
8.1.4 访问类的属性 98
8.1.5 用初始化方法定制每一个蛋糕 100
8.1.6 添加一个生日祝贺方法 103
8.1.7 写一个助手方法 104
8.2 叫作self的特殊属性 106
8.3 类的继承 107
8.3.1 创建父类 108
8.3.2 创建子类 108
8.3.3 通过类型转换来检测数据类型 110
8.3.4 用向下类型转换使类型更明确 113
8.4 数值类型和引用类型 114
8.5 使用结构 117
8.6 我们学到了什么 118
第二部分 生日记录 119
第9章 在故事板上创建按钮和屏幕 121
9.1 App的概述 121
9.2 创建一个新的Xcode项目 122
9.3 添加App的图标 125
9.4 显示朋友的生日 126
9.4.1 添加表格视图控制器 127
9.4.2 添加导航控制器 129
9.4.3 添加按钮 130
9.5 设置输入控件标签 133
9.5.1 添加朋友的名字和生日 133
9.5.2 用自动布局让App在所有设备上都有完美外观 138
9.5.3 添加保存和放弃的按钮 139
9.6 我们学到了什么 140
第10章 用Birthday类来处理用户输入 141
10.1 Birthday类 141
10.1.1 创建一个新文件 142
10.1.2 编写Birthday类 144
10.2 做用户输入的程序 144
10.2.1 创建Add a Birthday的视图控制器 145
10.2.2 把代码和输入控件连接起来 146
10.2.3 把代码连接到故事板 147
10.2.4 设置最大的出生日期 149
10.3 保存Birthday 150
10.3.1 挂上Save按钮 150
10.3.2 从文本输入框读取文本 151
10.3.3 从日期挑选器获得日期 152
10.3.4 创建一个Birthday对象 153
10.4 添加Cancel按钮 153
10.5 我们学到了什么 154
第11章 显示生日 155
11.1 创建Birthday列表 155
11.1.1 创建生日表格视图控制器 156
11.1.2 在表格视图上加单元格 158
11.1.3 设置Birthdays表格视图控制器 161
11.1.4 在表格视图中显示生日 162
11.2 合起来 166
11.2.1 代理 166
11.2.2 设置代理连接两个控制器 171
11.3 我们学到了什么 172
第12章 保存生日 173
12.1 在数据库中保存生日 173
12.1.1 Birthday数据项 174
12.1.2 Birthday属性 175
12.1.3 应用程序代理 177
12.2 代码整洁 182
12.3 给App多做些功能 185
12.3.1 按字母顺序排列生日 186
12.3.2 删除生日 187
12.4 我们学到了什么 189
第13章 发出生日通知 191
13.1 用户通知框架 191
13.1.1 注册本地通知 192
13.1.2 安排通知 194
13.1.3 删除通知 199
13.2 我们学到了什么 200
第三部分 校园滑板高手 201
第14章 设置舞台 203
14.1 哪里可以获得图片和声效? 204
14.2 用Xcode的SpriteKit做游戏 204
14.3 创建游戏项目 205
14.4 添加图片 206
14.5 场景:显示背景图片 207
14.6 要如何播放:屏幕方向 211
14.7 为不同的屏幕分辨率调整图像的大小 213
14.8 我们学到了什么 216
第15章 真的把“Schoolhouse Skateboarder”,做成游戏 217
15.1 我们的英雄:滑板高手 217
15.1.1 创建Skater角色类 218
15.1.2 引入SpriteKit 218
15.1.3 给Skater类加入自定义的属性 218
15.1.4 在场景中创建Skater的实例 219
15.1.5 设置Skater 220
15.1.6 让Skater出现在屏幕上 222
15.1.7 理解SpriteKit的调试信息 223
15.2 希丁的砖块 224
15.2.1 创建人行道砖块 224
15.2.2 刷新人行道砖块 226
15.2.3 用砖块填满屏幕 228
15.2.4 留下跳的沟 229
15.3 游戏循环 231
15.3.1 追踪更新的时间 231
15.3.2 计算每次更新所用的时间 231
15.3.3 用所用的时间来调整滚动的速度 232
15.3.4更新砖块 233
15.4 天天向上——让滑板角色跳跃 234
15.4.1 使用单击手势识别器 234
15.4.2 用简单的方法仿真重力 236
15.4.3 检查落地 237
15.5 我们学到了什么 238
第16章 使用SpriteKit的物理引擎 239
16.1 设置物理世界 240
16.2 物理体 240
16.2.1 给物理体以形状 241
16.2.2 设置物理体的属性 242
16.2.3 给滑板角色赋予物理体 243
16.2.4 给砖块添加物理体 245
16.3 接触与碰撞 246
16.3.1 处理接触和碰撞 246
16.3.2 响应接触 249
16.4 对物理体施加力 250
16.5 开始和结束游戏 251
16.5.1 开始游戏 251
16.5.2 结束游戏 254
16.6 我们学到了什么 255
第17章 调整难度、采摘钻石和记录分数 257
17.1 让游戏加速 257
17.2 增加多个高度的人行道平台 258
17.2.1 定义多个砖块高度 259
17.2.2 修改砖块派生的方式 260
17.3 增加要采摘的钻石 262
17.3.1 派生和记录钻石 262
17.3.2 决定何时产生新钻石 264
17.3.3 删除钻石 264
17.3.4 更新钻石 266
17.3.5 采摘钻石 267
17.4 实现计分和显示 268
17.4.1 创建标签 268
17.4.2 记录分数 272
17.4.3 更新标签 273
17.4.4 更新玩家分数 274
17.4.5 让钻石有价 275
17.4.6 记录最高分数 276
17.5 调整游戏规则 277
17.6 我们学到了什么 278
第18章 游戏的状态、菜单、声音和特效 279
18.1 记录游戏状态 279
18.2 添加菜单系统 281
18.2.1 创建MenuLayer类 282
18.2.2 需要的时候显示菜单层 286
18.2.3 删除菜单层 288
18.3 发出声音 289
18.3.1 添加音频文件 289
18.3.2 在正确的时机播放声音 290
18.4 射出火花 291
18.5 我们学到了什么 297
资源 299
查找错误 299
Apple文档 300
Xcode快捷键 301
iOS仿真器快捷键 302
Xcode的版本 302