本书通过制作真实世界的应用程序来帮助读者学习Swift4编程知识。例如木琴弹奏、问答测试、骰子游戏、聊天、待办事项类应用和天气应用。另外,书中还包括苹果的Core-ML智能应用程序与机器学习,通过学习这些内容,你将可以构建图像识别应用程序。全书各个部分的功能实现都基于由浅入深、循序渐进的原则,让广大读者在实践操作的过程中不知不觉地学习新方法,掌握新技能。
(1)作者是拥有10余年开发经验的iOS技术专家,著作颇丰,教学经验丰富。
(2)指导读者用全新的iOS系统、XCode工具和Swift语言开发iOS应用。
(3)摒弃传统入门书讲解方式,项目和任务驱动,逐步引导读者在实战中掌握iOS应用开发的工具、方法和技巧
(4)由浅入深、循序渐进,核心知识点蕴藏在10余个设计精巧的案例中,零基础读者也能开发出高质量应用。
为什么要写这本书
从目前来看,iOS是全球最流行的移动端操作系统,这已经成为不争的事实。同时近年来苹果公司不断更新和完善供iOS OS X应用编程的开发语言Swift,使Swift在未来赚足眼球成为可能。作为一名iOS开发者,相信对于Swift语言并不陌生。使用Swift语言可以高效开发出高质量的移动应用。如果开发人员现在还不开始学习Swift,还在留恋着Objective-C的话,恐怕用不了多久,就会被Swift所带来的技术革新无情淘汰。另一方面,iOS本身也在快速地进行技术改进。与以往不同,iOS 10、iOS 11引入和开放了许多别出心裁的新技术,如Core-ML、ARKit等。如果开发人员能够充分利用这些新技术,就可以让自己的应用给用户带来前所未有的使用体验,进而在移动应用时代取得一个制高点。
Swift自身的发展太快了,很多程序员在将自己的项目从Swift 2迁移到Swift 3的时候就遇到了很多头痛的问题。希望像这样“毁灭性”的升级是最后一次。好在从Swift 3到Swift 4的变化并不大。通过本书,读者可以将学到的知识点运用到实战中去,真正地将所有知识点融会贯通,从而打通所有“脉络”,在编写程序代码的时候达到“思如泉涌”的效果。
本书结构
本书通过制作真实世界的应用程序来帮助读者学习Swift 4编程知识。例如木琴弹奏、问答测试、骰子游戏、聊天应用、待办事项类应用(TODO)和天气应用。另外,书中还包括苹果公司的Core-ML智能应用程序与机器学习的相关内容,通过学习这些内容你将可以构建图像识别应用程序。
本书是根据由易到难的顺序来安排应用程序项目的,具体如下。
第1章:介绍Xcode的安装,认识Xcode的用户界面及主要面板功能,带领大家创建Hello World应用。
第2章:使用Interface Builder简单搭建用户界面,并制作I am rich应用。
第3章:介绍如何在iPhone物理真机上安装应用程序。
第4章:通过制作掷骰子应用,掌握如何通过代码控制界面元素,以及当用户与界面元素发生交互时如何给代码发送消息。
第5章:Swift语言的基础知识讲解。
第6章:介绍如何利用Stack Overflow网站解决在开发时所遇到的问题,并利用AVAudioPlayer类在应用中播放声音。
第7章:介绍MVC设计模式,并制作问答测试应用程序。
第8章:学习自动布局的相关知识,并对掷骰子应用进行迭代更新。
第9章:介绍类与对象的相关知识。
第10章:通过CocoaPods安装第三方链接库,并通过相关API从远程WebService获取所需要的数据。
第11章:利用目前国内流行的云端数据库建立聊天应用。
第12章:介绍版本控制的相关知识。
第13章和第14章:利用CoreData、Realm等数据存储工具实现类TODO应用程序。
第15章:利用机器学习和Core-ML的相关知识,构建图像识别应用程序。
各个部分的功能实现都基于由浅入深、循序渐进的原则,让广大读者在实践操作的过程中不知不觉地学习新方法,掌握新技能。
本书面向的读者
本书适合具备以下几方面知识和硬件条件的群体阅读。
有面向对象的开发经验,熟悉类、实例、方法、封装、继承、重写等概念。
有Swift的开发经验。
有MVC设计模式的开发经验。
有简单图像处理的经验。
有一台Intel架构的Mac电脑(Macbook Pro、Macbook Air、Mac Pro或Mac Mini)。
如何阅读本书
每个人的阅读习惯都不相同,而且本书并不是一本从Swift语法讲起的基础“开荒”书。所以我还是建议你先从Swift 3.X的语法书学起,在有了一定的Swift语言基础以后,再开始阅读本书,跟着实践操作一步步完成各章节的项目。
在阅读本书的过程中,你可能会遇到语法错误、编译错误、网络连接错误等情况,不用着急,根据调试控制台中的错误提示,去分析产生Bug的原因,或者通过与本书所提供的源码进行对比,找出问题所在。
勘误和支持
由于水平有限,编写时间仓促,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正。书中的全部源文件可以从GitHub(https://github.com/liumingl/iOS-11-Swift-4-Tutorial)下载,也可以从我的网站(刘铭.cn)下载。如果你有任何宝贵意见或建议,欢迎发送邮件至liuming_cn@qq.com,期待得到你们的真挚反馈。
致谢
首先要感谢伟大到可以改变这个世界的Steven Jobs,他的精神对我产生了非常大的影响。
其次要感谢机械工业出版社华章公司的编辑杨福川老师和小艺老师,在这段时间中始终支持我的写作,你们的鼓励和帮助使我顺利完成全部书稿。
最后感谢我的爸爸、妈妈、刘颖、刘怀羽、张燕、王海燕,感谢你们对我的支持与帮助,并时时刻刻给我信心和力量!
谨以此书献给我最亲爱的家人,以及众多热爱iOS的朋友们!
刘铭
刘铭
iOS技术专家,从事软件开发10余年,在iOS开发和Mac应用开发方面积累了丰富的实战经验。
乐于分享,先后受邀在VeryCD、ITCast、极客学院等平台发布过PHP、Flex和iOS方面的视频教程,在社区里有很大的知名度和影响力。
著作颇丰,先后出版了《iOS 6应用开发实战》、《iOS10快速开发:18天零基础开发一个商业应用》等4著作,深受读者欢迎。
QQ交流群:刘老师的iOS小屋(群号:230443535)
前 言
第1章 开始iOS 11和Swift 4编程 1
1.1 iOS 11应用程序开发工具 1
1.2 下载安装Xcode 3
1.3 浏览 Xcode 开发环境 4
1.4 初步剖析iOS应用程序 10
第2章 Interface Builder 介绍 12
2.1 如何创建 Xcode 项目 13
2.2 使用故事板创建用户界面 13
2.3 如何定位用户界面元素 16
2.4 导入图像素材到Xcode项目 18
2.5 运行并测试项目 20
第3章 在iPhone真机上安装应用 22
3.1 使用Xcode将项目下载到物理真机 22
3.2 通过GitHub下载项目样例代码 25
第4章 构建简单的掷骰子游戏 29
4.1 如何设计掷骰子游戏 29
4.2 建立代码与界面元素的关联 32
4.3 IBOutlets/IBActions调试 35
4.4 使用Swift创建随机数 37
4.5 数据类型、常量、变量 39
4.6 解决错误:“The Maximum Number of Provisioning Profiles Reached” 42
4.7 通过数组改变显示方式 43
4.8 为项目添加运动检测功能 46
4.9 挑战:Swift 数据类型、变量和数组 47
第5章 Swift程序设计基础 51
5.1 备注、打印语句和调试控制台 51
5.2 Swift函数: Part 1 - 简单函数 54
5.3 Swift函数: Part 2 - 函数的输入 56
5.4 Swift函数: Part 3 - 函数的输出 58
5.5 Swift 中的条件语句 (IF/ELSE) 59
5.6 挑战:在Playgrounds中制作人体体重指数计算器 62
5.7 Swift 中的循环语句 63
5.8 在程序中使用循环 64
5.9 挑战:脑筋急转弯 68
第6章 利用iOS API制作音乐应用 71
6.1 使用故事板中的Tags 71
6.2 学会使用Stack Overflow和Apple Documentation 74
6.3 利用 AVFoundation 播放声音 82
6.4 Swift 4中的错误捕获——Do、Catch和Try 84
6.5 创建一个播放声音的方法 86
6.6 让App每次播放不同的声音 88
6.7 程序中的“作用域” 89
第7章 使用Model-View-Controller设计模式制作小测验App 92
7.1 初始化Quizzler项目 92
7.2 创建数据模型 96
7.3 面向对象 98
7.4 创建答题库类 101
7.5 Model View Controller (MVC) 设计模式 102
7.6 初始化第一个题目 104
7.7 处理后续题目 106
7.8 使用 Xcode 调试控制台 108
7.9 如何实现UIAlertController以及弹出窗口给用户 110
7.10 高级别的重写 113
7.11 统计分数 113
7.12 合并Objective-C代码到Swift 116
7.13 挑战:制作情商测试应用 119
第8章 iOS的自动布局和设置约束 124
8.1 通过代码定位UI元素 126
8.2 自动布局 128
8.2.1 在界面生成器中实时预览布局效果 129
8.2.2 使用自动布局将square居中 130
8.2.3 解决布局约束的问题 132
8.2.4 另一种预览故事板的方式 133
8.2.5 添加一个标签 135
8.2.6 安全区域 137
8.2.7 编辑约束 139
8.3 自动布局实战——设置约束 139
8.4 挑战自动布局 145
8.5 在自动布局中使用堆叠视图 146
第9章 Swift 4中阶知识 152
9.1 类和对象 152
9.2 创建全新的类 153
9.3 创建枚举 155
9.4 根据类创建一个对象 156
9.5 类的初始化 157
9.6 Designated和Convenience初始化方法 158
9.7 创建一个方法 160
9.8 类的继承 161
9.9 重写一个继承的方法 162
9.10 Swift语言中的可选 164
第10章 利用Cocoapods、GPS、APIS、 REST制作天气应用 169
10.1 设置项目 170
10.2 注册免费的API Key 172
10.3 为什么需要Cocoapods? 173
10.3.1 在你的Mac上安装和设置Cocoapods 174
10.3.2 在你的Xcode项目中安装Pods 176
10.4 设置Location Manager并从iPhone获取GPS数据 177
10.5 定位权限 181
10.6 在WeatherViewController中获取GPS数据 184
10.7 委托、字典和API 190
10.7.1 委托 190
10.7.2 字典 190
10.7.3 API 191
10.8 使用Alamofire 192
10.9 JSON以及如何解析JSON 193
10.10 创建气象数据模型 196
10.11 Segues的相关介绍 201
10.12 在项目中使用委托和协议 204
10.13 如何在视图控制器间传递数据 207
10.14 基于城市名称的天气数据请求 212
10.15 挑战:利用Cocoapods、REST和APIs构建比特币价格跟踪应用 213
第11章 利用云端数据库、iOS 动画和高级Swift特性构建聊天应用 219
11.1 关于Bmob 219
11.1.1 在LeanCloud上注册账户 220
11.1.2 设置Bmob 220
11.2 保存数据到Bmob 222
11.2.1 创建桥接头文件 222
11.2.2 测试云端数据库的读写 223
11.2.3 在应用上注册一些用户 224
11.3 Swift闭包 227
11.4 事件驱动、应用程序生存期 231
11.4.1 事件驱动——应用运行的本质 231
11.4.2 应用程序的生存期 232
11.4.3 什么是完成处理? 232
11.5 导航控制器是如何工作的? 235
11.6 编写登录屏幕代码 236
11.7 表格视图 237
11.8 了解UI动画 243
11.9 发送消息 247
11.10 通过Bmob监听数据表的变化 248
11.11 进一步完善用户体验和用户界面 253
11.11.1 利用Progress Spinner改善用户体验 253
11.11.2