内容简介
BigNerdRanch是美国专业的移动开发技术培训机构,这本书就是它的培训资料。这本书系统地解释了如何使用苹果的Swift语言在iOS和macOS平台上开发iPhone、iPad和Mac应用的基本概念和编程技巧。本文主要围绕使用Swift语言开发iOS和macOS,并结合大量代码示例,教会读者使用先进的iOS和macOS功能开发真实应用。
目录
- 第一部分起步
- 第1章起步2
- 1.1Xcode起步2
- 1.2尝试playground4
- 1.3修改变量并打印信息到控制台5
- 1.4继续前进7
- 1.5青铜挑战练习7
- 第2章类型、常量和变量8
- 2.1类型8
- 2.2常量与变量9
- 2.3字符串插值11
- 2.4青铜挑战练习12
- 第二部分基础知识
- 第3章条件语句14
- 3.1if/else14
- 3.2三目运算符16
- 3.3嵌套的if17
- 3.4else if18
- 3.5青铜挑战练习19
- 第4章数20
- 4.1整数20
- 4.2创建整数实例22
- 4.3整数操作符23
- 4.3.1整数除法24
- 4.3.2快捷操作符24
- 4.3.3溢出操作符25
- 4.4转换整数类型26
- 4.5浮点数27
- 4.6青铜挑战练习28
- 第5章switch语句29
- 5.1什么是switch29
- 5.2开始使用switch30
- 5.2.1区间32
- 5.2.2值绑定33
- 5.2.3where子句34
- 5.2.4元组和模式匹配35
- 5.3switch与if/else38
- 5.4青铜挑战练习39
- 5.5白银挑战练习40
- 第6章循环41
- 6.1for-in循环41
- 6.2类型推断概述45
- 6.3while循环45
- 6.4repeat-while循环46
- 6.5重提控制转移语句47
- 6.6白银挑战练习50
- 第7章字符串51
- 7.1使用字符串51
- 7.2Unicode53
- 7.2.1Unicode标量53
- 7.2.2标准等价55
- 7.3青铜挑战练习57
- 7.4白银挑战练习57
- 第8章可空类型58
- 8.1可空类型58
- 8.2可空实例绑定60
- 8.3隐式展开可空类型62
- 8.4可空链式调用63
- 8.5原地修改可空实例64
- 8.6nil合并运算符65
- 8.7青铜挑战练习66
- 8.8白银挑战练习66
- 第三部分容器和函数
- 第9章数组68
- 9.1创建数组68
- 9.2访问和修改数组69
- 9.3数组相等75
- 9.4不可变数组76
- 9.5文档77
- 9.6青铜挑战练习78
- 9.7白银挑战练习78
- 9.8黄金挑战练习78
- 第10章字典79
- 10.1创建字典79
- 10.2填充字典80
- 10.3访问和修改字典80
- 10.4增加和删除值82
- 10.5循环84
- 10.6不可变字典85
- 10.7把字典转换为数组85
- 10.8白银挑战练习86
- 10.9黄金挑战练习86
- 第11章集合87
- 11.1什么是集合87
- 11.2创建集合87
- 11.3运用集合89
- 11.3.1并集89
- 11.3.2交集90
- 11.3.3不相交91
- 11.4青铜挑战练习92
- 11.5白银挑战练习92
- 第12章函数93
- 12.1一个基本的函数93
- 12.2函数参数94
- 12.2.1参数名字95
- 12.2.2变长参数96
- 12.2.3默认参数值97
- 12.2.4in-out参数98
- 12.3从函数返回99
- 12.4嵌套函数和作用域100
- 12.5多个返回值101
- 12.6可空返回值类型102
- 12.7提前退出函数103
- 12.8函数类型103
- 12.9青铜挑战练习104
- 12.10白银挑战练习104
- 12.11深入学习:Void105
- 第13章闭包106
- 13.1闭包的语法106
- 13.2闭包表达式语法107
- 13.3函数作为返回值110
- 13.4函数作为参数111
- 13.5闭包能捕获变量113
- 13.6闭包是引用类型115
- 13.7函数式编程116
- 13.8青铜挑战练习119
- 13.9青铜挑战练习119
- 13.10黄金挑战练习119
- 第四部分枚举、结构体和类
- 第14章枚举122
- 14.1基本枚举122
- 14.2原始值枚举125
- 14.3方法128
- 14.4关联值131
- 14.5递归枚举133
- 14.6青铜挑战练习136
- 14.7白银挑战练习136
- 第15章结构体和类137
- 15.1新工程137
- 15.2结构体141
- 15.3实例方法144
- 15.4mutating方法145
- 15.5类145
- 15.5.1Monster类146
- 15.5.2继承147
- 15.6应该用哪种类型150
- 15.7青铜挑战练习150
- 15.8白银挑战练习150
- 15.9深入学习:类型方法151
- 15.10深入学习:mutating方法152
- 第16章属性158
- 16.1基本的存储属性158
- 16.2嵌套类型159
- 16.3惰性存储属性160
- 16.4计算属性162
- 16.5属性观察者164
- 16.6类型属性165
- 16.7访问控制168
- 16.8青铜挑战练习171
- 16.9白银挑战练习171
- 16.10黄金挑战练习171
- 第17章初始化172
- 17.1初始化方法语法172
- 17.2结构体初始化172
- 17.2.1结构体的默认初始化方法177
- 17.3.1类的默认初始化方法177
- 17.3.2初始化和类继承177
- 17.3.3类的必需初始化方法183
- 17.3.4反初始化184
- 17.4可失败的初始化方法185
- 17.5掌握初始化188
- 17.6白银挑战练习188
- 17.7黄金挑战练习188
- 17.8深入学习:初始化方法参数189
- 第18章值类型与引用类型190
- 18.1值语义190
- 18.2引用语义192
- 18.3值类型常量和引用类型常量194
- 18.4配合使用值类型和引用类型196
- 18.5复制197
- 18.6相等与同一199
- 18.7我应该用什么200
- 18.8深入学习:写时复制201
- 第五部分Swift高级编程
- 第19章协议210
- 19.1格式化表格数据210
- 19.2协议214
- 19.3符合协议217
- 19.4协议继承218
- 19.5协议组合219
- 19.6mutating方法220
- 19.7白银挑战练习221
- 19.8黄金挑战练习221
- 第20章错误处理222
- 20.1错误分类222
- 20.2对输入字符串做词法分析223
- 20.3捕获错误231
- 20.4解析符号数组232
- 20.5用鸵鸟政策处理错误236
- 20.6Swift的错误处理哲学239
- 20.7青铜挑战练习240
- 20.8白银挑战练习240
- 20.9黄金挑战练习241
- 第21章扩展242
- 21.1扩展已有类型242
- 21.2扩展自己的类型244
- 21.2.1用扩展使类型符合协议245
- 21.2.3嵌套类型和扩展246
- 21.2.4扩展中的函数247
- 21.3青铜挑战练习248
- 21.4青铜挑战练习248
- 21.5白银挑战练习248
- 第22章泛型249
- 22.1泛型数据结构249
- 22.2泛型函数和方法251
- 22.3类型约束253
- 22.4关联类型协议254
- 22.5类型约束中的where子句257
- 22.6青铜挑战练习259
- 22.7白银挑战练习259
- 22.8黄金挑战练习259
- 22.9深入学习:理解可空类型260
- 22.10深入学习:参数多态260
- 第23章协议扩展262
- 23.1为锻炼建模262
- 23.2扩展Exercise264
- 23.3带where子句的协议扩展265
- 23.4用协议扩展提供默认实现266
- 23.5关于命名:一个警世故事268
- 23.6青铜挑战练习270
- 23.7黄金挑战练习270
- 第24章内存管理和ARC271
- 24.1内存分配271
- 24.2循环强引用272
- 24.3用weak打破循环强引用276
- 24.4闭包中的循环引用277
- 24.5逃逸闭包和非逃逸闭包281
- 24.6青铜挑战练习283
- 24.7白银挑战练习283
- 24.8深入学习:我能获取实例的引用计数吗283
- 第25章Equatable和Comparable284
- 25.1.1插曲:中缀运算符286
- 25.1.2方法“买一赠一”287
- 25.2符合Comparable287
- 25.3继承Comparable289
- 25.4青铜挑战练习290
- 25.5黄金挑战练习290
- 25.6白金挑战练习291
- 25.7深入学习:自定义运算符291
- 第六部分事件驱动的应用
- 第26章第一个Cocoa应用296
- 26.1开始创建VocalTextEdit297
- 26.2模型-视图-控制器298
- 26.3设置视图控制器299
- 26.4在Interface Builder中设置视图302
- 26.4.2添加文本视图303
- 26.4.3自动布局305
- 26.5连接307
- 26.5.1为VocalTextEdit的按钮设置目标-动作对307
- 26.5.2连接文本视图出口308
- 26.6让VocalTextEdit“说话”310
- 26.7保存和加载文档311
- 26.7.1类型转换313
- 26.7.2保存文档314
- 26.7.3加载文档316
- 26.7.4按照MVC模式整理代码320
- 26.8白银挑战练习320
- 26.9黄金挑战练习320
- 第27章第一个iOS应用321
- 27.1开始创建iTahDoodle322
- 27.2布局用户界面323
- 27.3为待办事项列表建模331
- 27.4设置UITableView335
- 27.5保存和加载TodoList337
- 27.5.1保存TodoList337
- 27.5.2加载TodoList339
- 27.6青铜挑战练习341
- 27.7白银挑战练习341
- 27.8黄金挑战练习341
- 第28章互操作342
- 28.1一个Objective-C工程342
- 28.2在Objective-C工程中加入Swift361
- 28.4白银挑战练习368
- 28.5黄金挑战练习368
- 第29章结语369
- 29.1接下来学习什么369
- 29.2插个广告369
- 29.3邀请369
Swift 入门不错的教程,不过关于iOS,Swift/Objc之间,内容不够。翻译还行,不过有能力还是推荐读原版。
Swift语言在其基本元素、抽象手段、组合手段这三个方面用非常简洁的思想实现,而组合起来却又很复杂,有丰富的扩展,确实是一种有非常强大表现力和灵活性的语言,从某种程度上来看能够极大的满足在编写程序时不同的设计需求,其表现和语言本身的设计思想非常值得推崇和学习。
非职业程序员,学习的编程还停留在谭浩强C和C++的水平,主要的编程实践来自于VBA。这本书是我读的第一本swift编程的书籍,借着这本书也学习了很多新的编程概念,泛型、可空、协议、扩展,讲的不是很细,但也算明白大概。继续自娱自乐的编程。