描述
开 本: 16开纸 张: 胶版纸包 装: 平装是否套装: 否国际标准书号ISBN: 9787302443759丛书名: 移动开发经典丛书
清华移动开发经典丛书
Swift入门经典
畅销书作者Erica Sadun 全新作品
教会你进行有效的Swift开发
源代码免费下载
在Erica Sadun编写的所有编程畅销书中, Swift开发秘籍 将现代的*实践转换为几十个行之有效、方便适用的解决方案。本书的代码示例是针对开发人员遇到的现实问题而创建的,以反映Swift的*功能和*实践。每章都将相关任务组织在一起。读者可以直接跳转到所需的解决方案,而不必先确定正确的类或框架。
本书涵盖了Swift开发的关键概念,展示了如何编写健壮且高效的代码,并帮助读者避免其他开发人员经常遇到的陷阱。书中为使用这一功能强大的语言提供了一些权威的策略,并考虑了Swift的快速更新和版本迁移工具。
你可能正在从Objective-C语言、从Swift语言的旧版本或者从非苹果语言迁移到现代的Swift语言,本书将有助于你掌握“如何”以及“为什么”进行有效的Swift开发。企业招聘人员正在寻找能解决实际问题并能开发有效工作代码的Swift开发人员。有了这本书,就可以准备启航了。
第1章 欢迎使用Swift 1
1.1 代码迁移 2
1.1.1
如何迁移 2
1.1.2
迁移课程 3
1.2 使用Swift 4
1.2.1
编译应用 4
1.2.2
框架和库 5
1.2.3
脚本 6
1.2.4
REPL 6
1.2.5
Playground 7
1.2.6
其他 8
1.3 学习Swift 8
1.4 小结 9
第2章 打印与映射 11
2.1 基础打印 11
2.1.1
打印多个条目 12
2.1.2
添加条目分隔符 13
2.1.3
字符串插值 13
2.1.4
控制换行符 14
2.2 秘诀:打印自定义目标 16
2.2.1
打印字符串 16
2.2.2
打印自定义输出流 17
2.3 秘诀:打印和字符串格式化
19
2.3.1
Swift和格式说明符 20
2.3.2
格式化的局限性 20
2.3.3
条件编译 21
2.4 调试打印 22
2.5 秘诀:后缀打印 24
2.6 快速查找 25
2.6.1
Quick Look for Custom Types 25
2.6.2
Playground中的Quick Look for Custom Types 26
2.6.3
Playground Quick Looks 26
2.6.4
为Playground创建自定义Quick Look 27
2.6.5
内置Quick Look类型 28
2.6.6
第三方渲染 29
2.7 使用Dump函数 30
2.8 构建自定义映射 31
2.8.1
递归映射 33
2.8.2
使用协议一致性构建
基本映射描述 33
2.9 添加标题文档 35
2.9.1
构建标题文档 36
2.9.2
Markdown支持 36
2.9.3
关键字 37
2.9.4
特殊的Swift关注点 39
2.9.5
为标题文档添加图像 40
2.10
小结 41
第3章 可选类型?! 43
3.1 可选类型初步 43
3.2 展开可选值(Unwrapping
Optionals) 45
3.2.1
强制展开 45
3.2.2
条件绑定 45
3.2.3
条件绑定和类型转换 46
3.2.4
级联绑定 48
3.2.5
guard语句 49
3.2.6
可选值的隐式展开 50
3.2.7
保护failable初始化器 52
3.2.8
可选值和哨兵值 53
3.2.9
合并 55
3.2.10
可选赋值 55
3.2.11
可选模式 56
3.3 可选链 58
3.3.1
选择器测试和可选链 60
3.3.2
下标 61
3.4 可选映射 61
3.4.1
映射和链 62
3.4.2
使用flatMap过滤nil值 62
3.5 非托管包装器 63
3.6 小结 64
第4章 闭包和函数 67
4.1 创建函数 67
4.1.1
参数名 68
4.1.2
标签约定 68
4.1.3
方法和函数的命名 70
4.1.4
外部和局部参数 71
4.1.5
默认参数 71
4.1.6
常量和变量参数 73
4.1.7
修改参数 74
4.2 闭包和函数 75
4.2.1
函数类型 75
4.2.2
使用元组实参 76
4.2.3
使用实参名缩写 77
4.2.4
推断闭包类型 78
4.2.5
参数类型推断 80
4.2.6
声明类型别名 80
4.2.7
嵌套函数 81
4.3 元组 83
4.3.1
将元组转换成结构体 84
4.3.2
元组返回类型 85
4.4 可变参数 86
4.5 捕获值 87
4.6
Autoclosure 90
4.7 柯里化(Currying)
94
4.7.1
柯里化的原因 95
4.7.2
构建库 95
4.7.3
局部应用 97
4.7.4
柯里化的成本 97
4.7.5
柯里化和回调 97
4.7.6
柯里化实践 99
4.8 将闭包传递给函数参数
100
4.9 小结 103
第5章 泛型和协议 105
5.1 详述泛型 105
5.1.1
协议 106
5.1.2
标记 107
5.1.3
类型约束 108
5.2 采用协议 108
5.2.1
声明协议 109
5.2.2
成员声明 111
5.2.3
构建基本协议 113
5.2.4
添加协议的默认实现 114
5.2.5
可选的协议要求 116
5.2.6
Swift原生的可选协议要求 116
5.3 构建泛型类型 117
5.4 泛型要求 119
5.4.1
一致性要求 119
5.4.2
秘诀:相同类型要求 120
5.4.3
泛型美化 121
5.4.4
合法的标记 122
5.4.5
匹配别名 123
5.4.6
协议别名的默认值 123
5.4.7
关联类型总结 124
5.5 扩展泛型类型 125
5.6 使用协议类型 126
5.6.1
基于协议的集合 126
5.6.2
Self要求 126
5.6.3
协议对象和Self要求 128
5.7 利用协议 129
5.8 小结 129
第6章 错误 131
6.1 冷酷无情的失败 131
6.1.1
致命错误 132
6.1.2
断言 132
6.1.3
先决条件 133
6.1.4
中断和退出 134
6.2 优雅地失败 134
6.2.1
ErrorType协议 134
6.2.2
在可选项和错误处理之间做出选择 136
6.3
Swift的错误规则 136
6.3.1
规则1:远离nil哨兵 136
6.3.2
规则2:使用throw抛出错误 138
6.3.3
规则3:使用带有可见访问的错误类型 139
6.3.4
规则4:使用throws来标记所有错误参与的方法 139
6.3.5
规则5:坚持使用rethrows 140
6.3.6
规则6:消耗错误是很重要的 141
6.3.7
规则7:终止线程的错误链 141
6.4 构建错误 143
6.4.1
良好的错误 144
6.4.2
为错误命名 144
6.5 添加字符串描述 145
6.5.1
添加原因 145
6.5.2
简化输出 146
6.5.3
扩展字符串 147
6.5.4
类型特定的错误 147
6.6 获取上下文 147
6.6.1
将字符串置于上下文中研究 148
6.6.2
将抛出类型置于上下文中研究 149
6.6.3
简化上下文 151
6.7 调用抛出函数 152
6.7.1
使用try 152
6.7.2
错误传播 153
6.7.3
使用 try! 154
6.7.4
使用 try? 155
6.8 为try?实现替代方法 156
6.8.1
谨慎使用结果 158
6.8.2
构建try?的打印版本 158
6.9 使用guard和defer 159
6.10
小结 160
第7章 类型 161
7.1 语言概念 161
7.1.1
引用类型和值类型 161
7.1.2
复制与回写 163
7.1.3
代数数据类型 164
7.1.4
其他术语 164
7.2 枚举 165
7.2.1
基本枚举 166
7.2.2
使用哈希值来支持区间 166
7.2.3
原始值枚举 168
7.2.4
原始值成员和序列 169
7.2.5
关联值 171
7.2.6
间接值 172
7.3
switch语句 173
7.3.1
分支 173
7.3.2
中断 174
7.3.3
fallthrough 174
7.3.4
复杂的case 176
7.3.5
元组 176
7.3.6
值绑定的模式匹配 177
7.3.7
where子句 177
7.3.8
展开可选的枚举 178
7.4 通过类型嵌入值 179
7.5 选项集 182
7.5.1
重温 NS_OPTIONS 182
7.5.2
构建枚举 183
7.5.3
构建选项集 184
7.5.4
查看选项 184
7.6 类 185
7.6.1
优化 186
7.6.2
初始化器 186
7.6.3
初始化步骤 187
7.6.4
指定初始化器和便利初始化器 187
7.6.5
初始化器规则 187
7.6.6
构建便利初始化器 188
7.6.7
可失败初始化器和抛出初始化器 189
7.6.8
析构器 191
7.7 属性观察器 192
7.8 扩展和重写 194
7.9 惰性求值 196
7.9.1
惰性序列 196
7.9.2
惰性属性 196
7.10
小结 197
第8章 杂记 199
8.1 声明标签 199
8.2 自定义运算符 201
8.2.1
声明运算符 201
8.2.2
运算符的一致性 202
8.2.3
对运算符的取舍进行评估 203
8.3 数组的索引 203
8.3.1
多索引的数组访问 204
8.3.2
封装索引 206
8.3.3
数组切片 206
8.4 泛型下标 207
8.5 字符串工具 209
8.5.1
重复元素初始化器 209
8.5.2
字符串和基数 209
8.5.3
字符串区间 211
8.5.4
字符串分割 212
8.5.5
字符串下标
213
8.5.6
与Foundation的互操作 214
8.5.7
连接与扩展 214
8.6 序列生成器 215
8.7 小结 217
虽然Swift编程语言已经问世一年多了,但该语言仍在不断地发展和演变。编写一本有关尚未稳定的编程语言的书籍,似乎有些令人可笑,但这正是本书所要做的事情。Swift虽然还在不停地变化,但它已不是新生儿。Swift并不知道Apple开发者预期的目的是什么。作为现代类型安全的语言,Swift已经确定了其基本法则,具体细节的实现就只能交给时间来解决了。
Swift让编程变得简单而快乐。它的结构和库呈现了崭新的方法,以便组织代码和处理数据,并执行无休止的日常任务。从面向协议和函数编程到优秀的闭包和代数数据类型,Swift提供了一种新的且令人兴奋的编程方式。使用Swift开发的时间越长,就越难回到之前的旧语言,因为旧语言中没有提供这些属于Swift的强大特性。
本书与传统的教程有所不同。无论你是否有编程经验,如果希望将现有的能力提升到一个新的高度,那么本书就是为你而写的。书中的每个重点章节都涵盖了实用技能。这些章节会指引你掌握Swift,并完成其中的基本开发任务。你不必从头到尾阅读本书(尽管你很喜欢这样做),而可以直接深入到你想学习的任何话题中,从讨论中获取你要学习的内容。
本书在笔者的工作中被视为一个令人振奋的项目。希望你能像我喜欢写本书一样喜欢阅读本书。
本书的组织结构
本书提供了一个实用的Swift开发专题调查。以下是本书各章的内容:
第1章,“欢迎使用Swift”——该章探讨如何使用Swift这种现代类型安全的编程语言来构建应用。在工作中使用不断变化的新语言并不总是一帆风顺。自从苹果公司推出Swift语言之后,该语言一直都在更新。从一个个beta版的发布到一个个release版的发布,这意味着一些新功能和新语法可能在下一个版本发布时就不再使用了。该章介绍了学习一种不断发展的语言意味着什么,以及如何在语言更新的同时移植代码。
第2章,“打印与映射”
——虽然编程是使用代码构建组件,但要牢记代码终是为开发者和用户服务的。代码不仅仅需要编译,还应易于理解、上下连贯并且高效执行。该章讨论所有范围内的输出场景,从面向用户的写操作到面向开发者的调试支持。该章除了总结这些技术外,还探讨如何准确地建立反馈和文档并根据开发和调试需求输出相应内容。
第3章,“可选类型?!”——不像其他语言那样,Swift中的nil并不是指针。可以使用nil来安全地表示结构中潜在的有效或无效值。学习如何识别和使用可选类型是掌握Swift语言的重要一步。该章介绍了可选类型,为了检测nil支持的结构,需要在代码中创建、测试并成功地使用可选类型。
第4章,“闭包和函数”——闭包语法为方法、函数和“块”参数提供了基础,所有这些参数都是开发Swift应用的基础。通过封装状态和功能,促使了优秀结构的形成。该章讨论了闭包,展示了闭包在Swift中的工作方式以及如何更好地将其纳入应用中。
第5章,“泛型和协议”——泛型有助于构建健壮的代码,用以扩展单一类型之外的功能。泛型实现服务于一组数据类型,而不是某一种特定的数据类型。泛型类型和协议(行为合约)的组合,建立了强大而灵活的编程组合。该章介绍了这些概念,并且探讨了如何掌握那些在版本更新中经常令人迷惑的部分。
第6章,“错误”—— Swift中的“错误”和其他编程语言中一样,表示失败的事情。在日常开发任务中,你会遇到逻辑错误,即能正常编译运行,但无法达到预期效果。有时还会遇到由现实条件而产生的运行时错误,如缺少资源或访问了不可用的服务。Swift反馈机制包括断言导致的致命错误和支持恢复的错误类型,它们可以帮助定位问题,并提供运行时的解决方案。该章介绍“错误”,并帮助你了解如何处理各种故障。
第7章,“类型”——当提到类型时,Swift提供了三个不同寻常的类型系列。Swift的类型系统包括类(提供引用类型)、枚举和结构体(二者都为代数值类型)。为支持开发,每种类型都有独特的优势和功能。该章总结了Swift语言中常用的关键概念,并探讨了应用中类型的工作方式。
第8章,“杂记”——Swift是一种充满活力且正在不断发展的语言,在单一的框架内许多功能并不总是适用。该章介绍了一系列主题,虽然这些主题在本书找不到合适的对应章节,但仍然值得关注。
关于示例代码
在开源代码托管网站GitHub上可以找到本书的源码,网址为https://github.com/erica/ SwiftCookbook。在该网站上可以找到每章的源代码,其中涵盖了本书的所有示例。
可以使用git工具克隆整个仓库或者单击GitHub上的Download按钮来获取示例代码。在本书编写时,Download按钮位于网页右边中心位置
。通过下载ZIP归档文件能够获取整个仓库。
本书中文支持网站www.tupwk.com.cn/downpage上也提供了各章的源代码。
贡献
示例代码从来没有固定版本。它将随着苹果公司对Swift语言的更新继续演化。通过对bug提出修复和纠正建议以及通过扩展示例代码可以参与其中。GitHub允许你创建分支并添加自己的东西,后合并到主分支进行分享。如果你想出了新点子或新方法,请告诉我。
了解GitHub
GitHub(http://github.com)是的Git托管网站,其中包含超过150
000个公共库。它提供免费托管的公共项目和付费托管的私有项目。它有一个自定义的Web界面,其中包括维基托管、问题跟踪,重要的是它还包括项目开发者的社交网络,这是寻找新代码或查找现有库的好地方。在GitHub网站上注册一个免费账户,然后才能复制和修改这些公有库或创建自己的开源iOS项目,以与他人分享。
联系作者
如果有关于本书的任何意见或问题,请给我发电子邮件到[email protected],或者在GitHub上给我留言。
评论
还没有评论。