第1章 搭建Swift开发环境 1
1.1 Swift介绍 1
1.1.1 Swift的前世今生 1
1.1.2 Swift与Objective-C 2
1.2 Mac OS X操作系统 3
1.3 Xcode简介和获取方法 4
1.3.1 Xcode简介 4
1.3.2 Playground简介 4
1.3.3 Xcode的获取方法 5
1.4 iPhone SDK简介 6
第2章 Swift基础语法 7
2.1 基础知识 7
2.1.1 命名规则 7
2.1.2 常量与变量 8
2.1.3 类型推测 9
2.1.4 注释 9
2.1.5 输出常量和变量 10
2.2 基本数据类型 11
2.2.1 整数 11
2.2.2 浮点数 11
2.2.3 布尔类型 11
2.2.4 元组类型 12
2.2.5 可选型 13
2.3 基本运算符 15
2.3.1 赋值运算符 15
2.3.2 数值运算 15
2.3.3 自增和自减运算 16
2.3.4 复合赋值 16
2.3.5 比较运算 16
2.3.6 三元运算符 16
2.3.7 逻辑运算符 17
2.3.8 范围 17
2.3.9 括号优先级 18
2.4 字符串与字符 18
2.5 集合类型 22
2.5.1 数组 22
2.5.2 集合 25
2.5.3 字典 26
2.6 控制流 27
2.6.1 for循环 27
2.6.2 while循环 28
2.6.3 if判断语句 29
2.6.4 switch开关语句 29
2.7 函数 31
2.8 闭包 34
2.9 Swift 三杰——类、结构体、枚举 37
2.9.1 Swift三杰简介 37
2.9.2 值引用与类型引用 38
2.9.3 类 38
2.9.4 结构体 39
2.9.5 枚举 40
2.10 属性 41
2.10.1 存储属性 41
2.10.2 计算属性 42
2.10.3 属性观察器 44
2.10.4 类型属性 45
2.11 方法 46
2.12 下标 49
2.13 继承 51
2.14 构造与析构 53
2.14.1 构造器 54
2.14.2 析构器 57
2.15 类型检查与类型转换 58
2.15.1 类型检查 59
2.15.2 类型转换 60
2.16 类型嵌套 61
2.17 扩展 62
2.17.1 扩展计算属性 62
2.17.2 扩展构造器 63
2.17.3 扩展方法 63
2.17.4 扩展下标 64
2.18 协议 64
2.18.1 声明协议 64
2.18.2 遵守协议 66
2.18.3 实现协议 66
2.19 泛型 66
2.20 断言 67
第3章 Swift进阶语法 69
3.1 再谈可选型 69
3.1.1 可选型 69
3.1.2 为什么要用可选型 70
3.1.3 解包可选型 71
3.1.4 可选绑定 72
3.1.5 可选链 73
3.2 AnyObject 74
3.2.1 AnyObjject简介 74
3.2.2 AnyObject的使用 74
3.3 几个数组相关的实用方法 76
3.3.1 filter方法 76
3.3.2 map方法 76
3.3.3 reduce方法 78
3.3.4 sort方法 78
3.3.5 contains方法 78
3.3.6 find方法 79
3.4 Objective-C兼容性 79
3.5 ARC自动引用计数 80
3.5.1 ARC原理 80
3.5.2 循环强引用 82
3.5.3 弱引用与无主引用 83
3.6 带下标的遍历 84
3.6 1 C语言风格的for循环 85
3.6.2 快速遍历 85
3.6.3 enumerateObjectsUsingBlock 85
3.6.4 enumerate 85
3.7 方法参数的语法甜头 86
3.7.1 可变参数 86
3.7.2 柯里化 86
3.8 闭包的“延迟调用”特性 88
3.9 Swift 2.0新特性详解 90
3.9.1 println简化为print 90
3.9.2 do-while更名为repeat-while 91
3.9.3 where关键字 91
3.9.4 if-case结构 92
3.9.5 guard关键字 92
3.9.6 错误处理 93
3.9.7 LLVM 与泛型特化 96
3.9.8 Protocol Extensions 97
3.9.9 API的可用性检查 98
3.9.10 String与NSString言归于好 99
3.9.11 总结 100
第4章 iOS开发中的MVC模式 101
4.1 iOS系统初探 101
4.1.1 核心OS(Core OS)层 102
4.1.2 核心服务(Core Services)层 102
4.1.3 媒体(Media)层 103
4.1.4 CocoaTouch层 103
4.2 MVC模式 103
4.2.1 MVC简介 103
4.2.2 iOS中的MVC 103
4.3 新建一个Swift 工程 106
4.4 认识Interface Builder 109
4.5 构建计算器界面 112
4.5.1 使用对象库中的对象 113
4.5.2 使用检查器设置对象 114
4.5.3 尝试运行程序 115
4.5.4 添加约束 117
4.5.5 关联代码 120
4.5.6 完善按键 125
4.6 实现计算器逻辑 126
4.6.1 补全键盘 127
4.6.2 给键盘添加约束 128
4.6.3 实现数字显示功能 131
4.6.4 实现运算逻辑 133
4.7 修改计算器为MVC模式 135
4.8 NSNotification 137
4.8.1 NSNotification简介 137
4.8.2 addObserver方法 138
4.8.3 addObserverForName方法 141
4.8.4 postNotification方法 142
第5章 掌控UlKit 143
5.1 本地化 143
5.2 视图(View) 145
5.3 生命周期 149
5.3.1 APP的生命周期 149
5.3.2 控制器的生命周期 150
5.4 Button(按钮) 151
5.4.1 按钮属性检查器 152
5.4.2 按钮的代码实现 153
5.4.3 为按钮添加事件 155
5.5 Label(标签) 156
5.5.1 Label的属性检查器 157
5.5.2 Label的代码实现 158
5.6 TextField(文本框) 159
5.6.1 Text Field的属性检查器 160
5.6.2 Text Field的代码实现 161
5.6.3 键盘 162
5.7 Switch(开关) 163
5.8 Segmented Control(分段控件) 165
5.8.1 Segmented Control的属性检查器 166
5.8.2 Segmented Control的代码实现 166
5.8.3 “按钮”还是“分段” 168
5.9 Slider(滑块) 169
5.9.1 Slider的属性检查器 169
5.9.2 Slider的代码实现 170
5.10 ProgressView&ActivityIndicatorView 171
5.10.1 多线程入门 171
5.10.2 ProgressView(进度条) 173
5.10.3 ActivityIndicatorView(环形进度条) 175
5.11 Stepper(步进器) 177
5.11.1 Stepper的属性检查器 178
5.11.2 Stepper的代码实现 178
5.12 ImageView(图像控件) 179
5.12.1 UIImageView&UIImage 180
5.12.2 UIImageView的属性检查器 182
5.12.3 UIImageView的代码实现 182
5.13 PickerView&DatePicker 186
5.13.1 PickerView(选择器)简介 186
5.13.2 使用delegate和dataSource 187
5.13.3 PickerView的代码实现 189
5.13.4 DatePicker(日期选择器)的属性检查器 192
5.13.5 DatePicker的代码实现 194
5.13.6 浅谈“Delegate pattern”委托模式 194
5.14 AlertView&ActionSheet 195
5.14.1 AlertView(提醒框) 195
5.14.2 ActionSheet(操作表) 198
5.14.3 更好的选择:UIAlertController 200
5.15 多重MVC及Segue(过渡) 204
5.15.1 多重MVC与Segue简介 204
5.15.2 NavigationController(导航控制器) 207
5.15.3 Segue(过渡) 214
5.15.4 SplitViewController(分屏控制器) 223
5.15.5 TabBarController(选项卡控制器) 225
5.15.6 PageViewController(页面控制器) 232
5.16 Toolbar(工具栏) 239
5.17 ScrollView(滚动视图) 242
5.17.1 ScrollView简介 242
5.17.2 CGFloat、CGPoint、CGSize 242
5.17.3 视图的坐标系统 242
5.17.4 ScrollView实战 243
5.18 TableViewController(表视图控制器) 246
5.18.1 UITableView简介 246
5.18.2 UITableViewCell简介 249
5.18.3 TabelView与cell的交互 250
5.19 SearchBar(搜索框) 255
5.19.1 SearchBar的属性检查器 255
5.19.2 实时显示搜索结果的SearchBar 257
5.20 iOS与Web 260
5.20.1 UIWebView 260
5.20.2 WKWebView 263
5.20.3 SFSafariViewController 264
5.21 AutoLayout&StackView 266
5.21.1 AutoLayout(自动布局) 266
5.21.2 UIStackView(堆栈视图) 276
第6章 iOS开发揭秘 280
6.1 Gesture(手势) 280
6.2 KVC与API设计 285
6.3 访问短信API与电话API 289
6.3.1 使用URL访问短信API与电话API 289
6.3.2 MessageUI 290
6.4 访问相册API与相机API 292
6.5 快速分享API 295
6.6 地图与定位API 300
6.7 网络通信 310
6.7.1 网络通信初探 311
6.7.2 NSURLConnection还是NSURLSession 312
6.8 数据持久化 316
6.8.1 Archiving(归档) 317
6.8.2 File System(文件系统) 317
6.8.3 SQLite&Core Data 320
6.9 多线程 325
6.9.1 GCD 325
6.9.2 NSOperationQueue 328
附录A Swifter帮助贴士 331