首页>参考读物>计算机科学与技术>软件与程序设计

Swift编程实战:iOS应用开发实例及完整解决方案
作者 : Vandad Nahavandipoor 著
译者 : 梁士兴 陈作君 赵萌 等译
出版日期 : 2016-06-13
ISBN : 978-7-111-53927-8
定价 : 139.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 792
开本 : 16
原书名 : iOS 8 Swift Programming Cookbook: Solutions & Examples for iOS Apps
原出版社: O'Reilly Media USA
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

图书特色

no

图书前言

前言
大约一年前,我注意到苹果公司不再像过去几年那样大幅更新Objective-C,我得到暗示,苹果可能正在为iOS开发研究新的语言或框架。我和工作上的伙伴交流了这一想法,他们笑着说:“你的书得重写了。”还真让他们说对了,这一版的内容几乎是全新的。
本书的上一版新增了许多知识点,还根据iOS 7更新了所有的Objective-C代码,这看起来已经是个非常庞大的工程了。然而,那些工作量和这一版相比则显得微不足道:因为所有内容都得用Swift重写。除此之外,新知识点数不胜数。我敢肯定这一版是初版以来付出心血最多的一版。所有的代码都用Swift重写,不是简单的逐行翻译,而是要充分利用Swift的优良特性,比如extensions。
没有人料到苹果公司会在其2014年的世界开发者大会(WWDC)上推出Swift。大家都以为会像以往几届一样,发布大量的新API和一些Objective-C增强特性。不过这次给了我们一个惊喜,至少对我来说是个惊喜。
我认为Swift是一门伟大的语言,并被iOS开发界期待已久。我们这些伴随着初版iOS SDK(也就是所谓的iPhone SDK)成长的人,深知手动管理引用计数的痛苦。本书早期版本里对这些概念的解释,现如今已显得无用且碍手碍脚。我们不得不花费太多精力在避免应用因内存管理问题而崩溃,无法专注于开发一个优秀的应用。Swift解决了大量诸如此类的问题,让我们有更多精力处理更复杂的问题。
Swift并非仅适用于iOS开发,因为它的许多特性在普通应用里没有充分发挥,但是在某些复杂或者高性能场景下,比如游戏开发,Swift则显得尤为合适。当进行iOS开发时,框架似乎比语言更为重要,这也是开发人员经常遇到困难的地方。包括苹果在内的许多公司都认为他们只要分别为每个API写好文档就已经足够,却不明白开发人员需要知道如何用一系列API组合来完成特定功能。苹果公司会告诉你,这有根胡萝卜,它含有多少卡路里,有多重,颜色是橙色,产地是哪。而本书会告诉你如何用它做出一锅美味的萝卜汤。
苹果公司没有提供如何使用其API的基本指南,但这也是业界普遍现象。把所有API记录在文档中是一个巨大的工程,苹果已经做得很出色了。本书会帮助你使用这些API向客户交付惊艳的应用。
希望读者会喜欢本书,如果有什么地方没解释清楚,可以通过Facebook、Twitter或者邮件联系我,能为广大开发者提供帮助,我将无比荣幸。
读者对象
本书假定你了解Xcode的使用,并写过少量Swift代码。本书并非Swift语言入门教程,而是展示如何用Swift编写强大而有趣的iOS应用,这两者有很大的区别。本书不会具体讲解Swift语言,因为苹果已经通过长达500页的《Swift Programming Language Guide》进行了非常透彻的讲解。因此没有必要进行重复劳动。如果觉得Swift用着还不够顺手,不妨先读一读这本指南,苹果公司免费提供,上网搜索即可。
本书同样不会讲解最基础的iOS开发。希望你已经了解基础的软件工程和算法理论。本书的目标并非帮助你成为一名软件工程师。如果你已经了解函数、栈、数组、字典或者散列表等,本书很适合你。否则的话,建议你先成为某领域的软件工程师(即使语言并非Swift),然后再重拾本书,学习如何编写惊艳的iOS应用。
本书结构
每章内容概要如下:
第1章 基础知识
该章阐述iOS开发基本组成部分,例如消息、标签、滑块、按钮、文本框以及文本视图、导航栏等。建议阅读该章内容后实际试用一下,然后再进入更高级的主题。
第2章 扩展
苹果公司终于允许扩展iOS了!把应用附带的扩展程序整合进iOS而独立存在,无需应用在后台运行。例如,现在可以创建自定义键盘,并安装到用户的设备上。即使应用没有运行,用户也可以使用自定义键盘。在Android系统中,这些特性一开始就得到了很好的支持。所以,当苹果为iOS提供这项特性后,我没有说“噢,太棒了”,而是说“终于啊”。阅读该章并且思考它对你的价值吧。
第3章 使用HealthKit管理健康数据
HealthKit允许iOS应用与存储在用户设备上的健康信息进行集成。这些信息属于设备中当前的用户,可以包含非常具体的内容,比如用户上次跑步消耗的脂肪总量。该章讨论如何在应用中集成HealthKit,并对健康数据库进行读写。
第4章 使用HomeKit管理家用电器
HomeKit是SDK中的另一个令人拍案叫绝的框架。它允许iOS应用与开启HomeKit的外设进行对话。该章讨论如何发现这些外设,进行配置,并与之通信,等等。
第5章 创建有动态交互性的用户界面
创建一个生动的用户界面远不止一个表格视图和导航栏的一个标签。它需要模拟现实世界的物理规律。该章介绍如何模拟重力以及其他物理行为,并将这些行为附加到UI组件。
第6章 表格视图和集合视图
展示给用户的许多信息都能以结构化形式在屏幕上的不同单元中显示出来。 表格视图和集合视图在iOS中被大量使用,从“照片”到“设置”等应用,它们随处可见。该章讨论如何使用SDK中的组件来实现非常实用的功能。
第7章 并发和多任务
当应用运行时,默认情况下应用委托在主线程上执行UI相关的任务。但是不要在UI线程上执行繁重的下载和计算任务,因为那样会毁掉用户体验。事实上,当UI线程被阻塞超过5秒时,iOS会杀掉应用进程。该章讨论如何使用并发与多线程技术让应用流畅运行,完成一切所需操作而不过多占用UI线程。
第8章 安全
还在用NSUserDefaults存储用户名和密码吗?如果答案是“是的”,那么义无反顾地读一下这章吧。该章会讨论有关Touch ID认证和Keychain的功能。还会讨论如何使应用的用户接口更加安全。
第9章 Core Location、iBeacon和地图
当用户想找到去往超市的路或者当前处于建筑的第几层(严格地说,iOS总能知道这些信息),iOS的众多传感器可以派上用场。因此,本章将讨论关于iBeacon、地图,以及Core Location的知识点。
第10章 手势识别
当史蒂夫·乔布斯介绍iPhone时,他向世界展示了如何在iPod音乐库中进行滚动,只需要上下滑动页面。我仍然记得当时人们的掌声和欢呼声。苹果公司的工程师将滑动手势加入视图中,这才使乔布斯先生能如此平滑地滚动页面。该章将讨论手势相关的知识。
第11章 网络与分享
iOS设备在没有Internet连接的时候是什么?只是一部普通的手机或者一台平板电脑罢了。网络连接真的给予了智能机太多。该章将讨论如何使用SDK中提供的一些类,在后台和前台状态进行网络下载或上传文件。
第12章 多媒体
在iOS应用的内部,一旦获得了用户的许可,就可以访问他们的音频和视频文件,并且为用户播放这些文件,或者单纯抓取这些文件的数据,然后进行任意想要的处理。比如,创建一个游戏,可能会希望为用户播放一些背景音乐以增加游戏的吸引力。该章将讨论如何载入并播放音频和视频文件。
第13章 通讯录
通讯录框架仍然由C语言API组成。有人说这是出于性能考虑,但是我坚信苹果公司只是为这个框架设置了很低的优先级,还没有将它用SDK的最新技术进行升级。所以,该章会介绍如何使用Swift将通讯录框架集成到应用中,从而可以访问用户的联系人信息,当然,前提是用户授予了访问的权限。
第14章 文件与文件夹管理
通常编写iOS应用无需烦琐的操作文件和文件夹。但是,如果需要在文件中存储信息并且将文件用文件夹分类存放,可以开始阅读该章。该章会讨论如何写入文件、读取文件、遍历文件,等等。
第15章 摄像头和照片库
iOS为用户保留了一个包含着设备中所有照片和视频的库。允许用户查看这些照片和视频的应用叫作照片(Photos)。该章将讨论如何访问存放在设备中的照片和视频的原始数据,以便可以将此功能集成到应用中,而无需让用户再切换到照片应用。
第16章 通知
iOS中的不同部分之间会以通知来进行交互。例如,当应用进入后台时,iOS会向应用的内存空间发送一条通知。开发者可以在应用内的任何对象中捕获这条通知,来得知应用已经进入后台,进而做出必要的处理。该章会讨论所有关于本地、推送以及应用通知的知识。
第17章 Core Data
Core Data为苹果的数据库技术。你可以存储、读取、排序以及展示数据,并为不同的数据部分创建关系,等等。有什么理由不喜欢它呢?Core Data是一项出奇简便的技术,但仍需要开发人员对其底层的架构有所了解。该章便会带你了解这些内容。
第18章 日期、日历和事件
日期(Date,双关语,可指日期或约会)很重要,无论是讨论可编辑的日期,或是与合作伙伴的约会,还是仅仅为日历中的日期。尽管我无法给出约会的建议,但你可以在该章了解到日历中的日期。同时该章会讨论如何构造日期对象,以及如何从用户日历中读取事件,等等。
第19章 图形和动画
开发人员时刻都想通过酷炫的图形和动画效果来打动用户。这正是该章的目的。你可以在屏幕上绘制图像,加入动画,进行旋转,等等。让用户们赞叹吧。
第20章 Core Motion
计步器是非常了不起的设备,可以对用户的行走步数进行实时计数。一旦获得了用户的记步数据,并了解到用户年龄及其他一些简单的信息,就可以计算出用户所消耗的卡路里数,并向他们展示激励信息,等等。该章会讨论有关计步器、加速计和陀螺仪这些极为有用的传感器,苹果公司已将它们内置于如今市面上的绝大部分iOS设备之中。
第21章 Cloud
想象一下,你能够像在Core Data中一样轻松地在云端存储数据。CloudKit便完美地做到了这一点。它是在iCloud之上的一层。该章将要讨论关于iCloud的知识。
更多资源
Swift是一门相对较新的语言,关注iOS开发的读者很可能想要熟悉这门语言。正如我前面提到过的,推荐你阅读苹果公司的Swift编程语言指南。读过之后,你一定不会对它失望的。
笔者会经常引用苹果公司的官方文档。其中一些苹果公司的描述说得很到位,重复描述它们实在没有意义。苹果公司官方文档中最重要的文档和指南贯穿本书,每个专业的iOS开发人员都应该阅读它们。
作为开始,建议阅读针对各种iOS设备的“iOS Human Interface Guidelines”(http://bit.ly/QbdY0B)。想要为各种iOS设备开发迷人且交互性好的用户界面,这份文档已经包含了一切。每个iOS开发人员都应该阅读这份文档。事实上,我相信任何开发iOS应用的公司都应该要求产品设计和开发团队阅读这份文档。
另外建议快速阅读iOS Developer Library(http://bit.ly/Qi7JaZ)中的“iOS App Programming Guide”,其中包含了一些对于开发高质量应用很有价值的提示和建议。
本书的使用说明
以下是本书的印刷惯例:
斜体
用于标识新条款,URLs,email地址,文件名和文件扩展名。
等宽字体(Constant width)
用于程序列表,同时还用于在段落中引用程序元素,比如,变量名或函数名,数据库,数据类型,环境变量,状态和关键字。
等宽粗体(Constant width bold)
显示命令或其他文本,需要用户逐字键入。
等宽斜体(Constant width italic)
展示的文字应该被用户提供的值或者上下文中提供的值所替换。
这个图标表示一条提示,建议,或者一般性的注解。

这个图标表明警告或需要格外注意。
使用本书的例子代码
辅助材料(例子代码,练习,等等)可以通过进行下载。
本书的目的是帮助读者解决任务。一般来说,如果本书提供的例子代码,读者可以在程序和文档中使用。而无需联系我们申请版权,除非是对包含了代码主要部分的二次发表。例如,编写程序,包含多处本书代码的片段,无需申请授权。但是,出售和分发来自 O扲eilly图书的示例的CD-ROM,则需要申请授权。回答本书提出的问题,并且引用例子代码无需申请授权。在产品文档中包含了本书的大部分例子代码,则需要申请授权。
我们会很感激,但不强制要求,在引用本书内容时,提供本书的引用出处。引用出处通常包含:标题, 作者,出版社, 和ISBN。
如果觉得对例子代码的实际使用超出这个提到的授权范畴,请放心的与我们联系permissions@oreilly.com。
Safari在线图书
Safari在线图书(www.safaribooksonline.com)是一个随选的数字库,用图书和视频两种形式,讲述了来自世界行业领导者的技术和商业专业知识。
技术专家、软件开发者、网站设计者和创业者都将Safari在线图书作为他们进行搜索、解决问题、学习和证书培训的首选资源。
Safari在线图书为企业、政府代理和个人进行产品融合和系统定价提供了基础知识。用户已经访问了许多图书、培训视频和全文检索数据库中已正式出版的原稿,这些原稿来自很多出版者,例如,O扲eilly Media、Prentice Hall Professional、Addison-Wesley Professional、Microsoft Press、Focal Press、Cisco Press、John Wiley& Sons、Syngress、Morgan Kaufmann、IBM Redbooks、Packt、Adobe Press、FTPress、Apress、Manning、New Riders、McGraw-Hill、Jones & Bartlett、Course Technology等,关于Safari在线图书的更多信息,请在线联系我们。
如何联系我们
美国:
O扲eilly Media,Inc.
1005 Gravenstein Highway North
Sebastopol,CA 95472
中国:
北京市西城区西直门南大街2号成铭大厦C座807室(100035)
奥莱利技术咨询(北京)有限公司
我们为本书提供了网页,该网页上面列出了勘误表、范例和任何其他附加的信息。您可以访问如下网页获得:
http://oreil.ly/HP-Drupal
要询问技术问题或对本书提出建议,请发送电子邮件至:
bookquestions@oreilly.com
要获得更多关于我们的书籍、会议、资源中心和O'Reilly网络的信息,请参见我们的网站:
http://www.oreilly.com.cn
http://www.oreilly.com
致谢
Andy Oram是本书的编辑,他的表现一如既往的优异。他以光的速度进行工作,为的是尽早把本书分享给读者。他逐字逐句地检查了本书的内容,使本书能够适合更多的读者。这里感谢他的辛勤劳动。同样要感谢Niklas Saers,他进行了大量的工作,在技术方面对本书进行了审读。
O扲eilly出版社的Rachel Roumeliotis同样提供了大量重要的帮助。她对我的工作始终给予支持。当我决定用Swift重新编写本书时,她非常高兴。所以,在做出这个重大决定时,非常感谢她能站在我这边。
感谢Sara,我可爱的搭档,感谢她在我写本书时付出的耐心。我简直不敢相信会有这样可爱和有耐心的搭档。我衷心地感谢她在这段时间为我做的一切。
还要感谢来自O扲eilly出版社的Heather Scherer和Amy Jollymore。他们帮助梳理了本书相关问题和即将到来的系列视频。
感谢Ulla、Leif、Bella和陪伴我度过每一秒的孩子们。这段时间对我意味着很多,我会永远感激。最后但并非不重要,我要感谢Molly的参与和支持,尤其是她每天和我一起散步时带给我的迷人的脸庞。你总是抽时间陪伴我,纵然你自己也有许多的工作,我始终深爱着你。“Duktig tjej”!

上架指导

计算机\程序设计

封底文字

本书完全用苹果公司的Swift编程语言进行了重写,读者在创建iOS应用时遇到的许多烦人问题,都可以通过本书介绍的方法得到解决。
本书使用了iOS 8的SDK,读者会在书中找到数百个全新的、改进过的知识点,包括使用健康应用数据和HomeKit配件、增强的动画和绘图、存储和保护数据、收发通知、管理文件和文件夹,等等。每节的示例代码都在Github上,读者可以立即使用。

使用CloudKit API轻松地向cloud中存储信息
创建自定义的键盘和扩展
使用HealthKit访问用户健康相关的信息
使用HomeKit与用户家中的配件设备进行交互
使用UIKit Dynamic创建生机勃勃、栩栩如生的用户界面
使用钥匙串保护用户的数据
开发位置和多任务相关的应用
使用iOS 8的音频和视频API进行工作
使用Event Kit UI管理日历、日期和事件
使用加速计和陀螺仪
获得手势识别的实用技巧
从地址簿获取和修改联系人及分组信息
检测相机是否可用并访问照片库

Vandad Nahavandipoor 资深iOS和OS X工程师,现就职于一个范围覆盖29个国家、拥有超过7000名员工的国际传媒公司。此前他曾在英国劳埃德银行工作,为数百万英国用户提供iOS应用程序。

“从使用iOS的新特性进行编码到处理复杂的需求,本书总是带给我所需要的资源和优秀、清晰、有实践性的示例。现在,我开始使用Swift,本书成为我的绝佳参考,没有它我会迷失。”
——Joao Duarte iOS高级软件工程师

作者简介

Vandad Nahavandipoor 著:暂无简介

译者简介

梁士兴 陈作君 赵萌 等译:暂无简介

译者序

移动应用开发作为当今最热门的应用开发方向,已经受到全世界开发者的极大关注。一方面,在主流的移动平台iOS中,Swift语言作为这一领域的新贵,无疑会在未来几年赚足眼球。对于原有的iOS开发人员,有喜也有悲。欢喜的是,开发人员终于有了一门更加优秀、更加现代化、更加高性能的编程语言。将Swift作为武器,可以高效地开发出高质量的移动应用。悲伤的是,如果开发人员现在还不开始学习Swift,恐怕用不了多久就会被Swift带来的技术革新无情淘汰。另一方面,iOS本身也在快速地进行技术演进。不同以往,iOS 8引入和开放了许多别出心裁的新技术,如Extensions、HealthKit、HomeKit、TouchID,等等。如果开发人员能够充分利用这些新技术,就可以显著改善应用带给用户的使用体验,进而在移动应用时代取得制高点。在这个时候,我深深地体会到拥有一本优秀教材的重要性。
第一次拿到本书的原版作品时,既兴奋又倍感压力。一方面,本书既介绍了iOS,又介绍了如何用Swift进行实战,与当今的市场需求非常契合。另一方面,随着深入阅读,我深深地被原作者的睿智和才华所打动。本书的内容完整详实,书中例子尽可能追求简单,并切中要害。既可以作为教材供在校师生使用,也可以作为工具书,供一线工程师备查。如何将这样一部优秀的作品尽可能快并且尽可能高质量地呈现给国内的读者,对我们来说是一个前所未有的巨大挑战。
作为美团移动团队的成员,我们都是奋战在一线的iOS开发工程师,但是翻译图书对我们来说仍然是个巨大的挑战。首先是时间,我们需要利用业余时间和尽可能多的碎片时间进行本书的翻译工作,深夜还经常看到小伙伴们仍然在奋笔疾书。不仅如此,我还有些许忧虑,担心自己把握不好原著恰到好处的笔锋,不能有效地将这样一部优秀的作品呈现在读者面前。因此,我们对这次翻译非常用心,与几位合作者一起查阅了大量相关资料,力求做到专业词汇准确权威,将原书的精华呈现给每一位读者。
现在,我怀着期盼和忐忑的心情,将这本译著呈现给大家,渴望得到您的认可,更渴望与您成为朋友,如果您有任何问题和建议,请与我联系(liangshixing@gmail.com),让我们一起探讨,共同进步!
感谢机械工业出版社华章分社的陈佳媛老师对我们的信任与支持。感谢(美团)酒店旅游事业群负责人陈亮建立了这支充满技术热情的移动团队。感谢另外两位主要译者——我的多年好友陈作君以及团队主管赵萌——几个月以来的共同努力。感谢北京航空航天大学的宋友老师和杨思宇同学,他们为本书的定稿和审读提出了大量有建设性的宝贵意见,并做出了许多有创新性的指导工作。感谢团队其他小伙伴,郝田田、王禹华、吴卓和张杰,对本书翻译审读工作的鼎力相助。最后,还要特别感谢家人的理解与包容。

梁士兴
2016年6月于北京

图书目录

前言 1
第1章 基础知识 9
1.0 介绍 9
1.1 为视图添加模糊效果 17
1.2 使用popover展示临时信息 20
1.3 使用UIImageView显示图片 24
1.4  使用UILabel显示静态文本 28
1.5  使用UIButton向UI中添加按钮 34
1.6  显示警告视图或者操作列表 38
1.7  使用UISwitch创建、使用、自定义开关 43
1.8  使用UIPickerView选取值 47
1.9  使用UIDatePicker选择日期或时间 51
1.10  使用UISlider实现区间滑块 55
1.11  使用UISegmentedControl实现分组的紧凑选项 59
1.12  使用UIActivityViewController显示分享选项 62
1.13  使用UIActivityViewController展示自定义分享选项 67
1.14  在导航栏上显示图片 72
1.15  使用UIBarButtonItem向导航栏添加按钮 73
1.16  使用UITextField接受用户文本输入 78
1.17  使用UITextView显示多行文本 85
1.18  使用UIScrollView创建可滚动的内容 89
1.19  使用WebKit载入网页 92
1.20  使用UIWebView载入网页 95
1.21  使用UIProgressView显示进度 98
1.22  创建配置文件 100
第2章 扩展 107
2.0 介绍 107
2.1 为照片应用添加新的照片编辑能力 110
2.2 向iOS提供自定义分享扩展 117
2.3 构建自定义键盘 126
2.4 通过操作扩展,在应用内部提供服务 132
2.5 向通知中心添加小工具 139
第3章 使用HealthKit管理健康数据 149
3.0 介绍 149
3.1 设置应用以使用HealthKit 149
3.2 获取和修改用户体重信息 152
3.3 访问和修改用户身高信息 158
3.4 获取用户特征 165
3.5 观察用户健康信息变化 169
3.6 读写用户燃烧的总卡路里值 174
3.7 单位转换 186
第4章 使用HomeKit管理家用电器 189
4.0 介绍 189
4.1 模拟HomeKit配件 191
4.2 在HomeKit中管理用户住宅 197
4.3 向用户的住宅添加房间 204
4.4 在用户住宅中指定区域 208
4.5 发现和管理支持HomeKit的配件 213
4.6 与HomeKit配件进行交互 218
4.7 对HomeKit配件进行分组 225
第5章 创建有动态交互性的用户界面 228
5.0 介绍 228
5.1 向UI组件添加重力效果 229
5.2 在UI组件之间检测并响应碰撞 231
5.3  使用推动(push)实现UI组件动画 237
5.4 对动力项目进行关联 241
5.5 向UI组件添加“跳动”效果 245
5.6 为动力特效设定特征 248
第6章 表格视图和集合视图 252
6.0 介绍 252
6.1 填充表格视图数据 253
6.2 为表格视图的单元格添加滑动删除功能 257
6.3 在表格视图中创建页眉和页脚 258
6.4 在表格视图中显示刷新控件 265
6.5 为集合视图提供基本内容 268
6.6 使用.xib 文件填充集合视图的自定义单元格 271
6.7 处理集合视图中的事件 278
6.8 为集合视图提供页眉和页脚 281
6.9 为集合视图添加自定义交互 285
第7章 并发和多任务 289
7.0 介绍 289
7.1 执行UI相关任务 292
7.2 执行非UI相关任务 294
7.3 在特定延时之后执行任务 301
7.4 对某个任务仅仅执行一次 303
7.5 将任务进行分组 305
7.6 使用操作(NSOperation)创建简单并发 307
7.7 在操作间创建依赖关系 312
7.8 触发周期性任务 314
7.9 在后台执行长时间运行的任务 317
7.10 为应用添加后台抓取功能 320
7.11 在后台中播放音频 328
7.12 在后台处理位置变化 331
7.13 在后台处理网络连接 333
第8章 安全 336
8.0 介绍 336
8.1 使用Touch ID验证用户 342
8.2 在应用中启用安全和保护功能 344
8.3 在钥匙串中存储数据 348
8.4 在钥匙串中查找值 350
8.5 更新钥匙串的已有值 353
8.6 在钥匙串中删除已有值 356
8.7 在多个应用中共享钥匙串数据 358
8.8 对iCloud中的钥匙串数据进行读写 362
8.9 在应用沙盒中安全存储文件 365
8.10 用户界面安全 368
第9章 Core Location、iBeacon和地图 370
9.0 介绍 370
9.1 检测用户在建筑中所在楼层 370
9.2 iBeacon介绍和处理 371
9.3 定位设备位置 377
9.4 在地图上显示大头针 382
9.5 在地图上添加自定义大头针 385
9.6 在地图上进行搜索 389
9.7 在地图上进行导航 394
9.8 使用摄像头自定义地图视图 400
第10章 手势识别 403
10.0 介绍 403
10.1 检测轻扫手势 405
10.2 检测旋转手势 407
10.3 检测拖曳手势 409
10.4 检测长按手势 411
10.5 检测轻击手势 414
10.6 检测捏合手势 416
10.7 检测屏幕边缘拖曳手势 418
第11章 网络与分享 420
11.0 介绍 420
11.1 使用NSURLSession下载数据 420
11.2 通过NSURLSession在后台下载数据 427
11.3 通过NSURLSession上传数据 430
11.4 通过NSURLConnection进行异步下载 432
11.5 处理异步连接中的超时 436
11.6 通过NSURLConnection同步下载 437
11.7 自定义URL请求 439
11.8 通过NSURLConnection发送HTTP请求 440
11.9 序列化和反序列化JSON对象 444
11.10 将社交分享整合到应用中 447
第12章 多媒体 451
12.0 介绍 451
12.1 播放音频文件 451
12.2 录制音频 453
12.3 播放视频文件 460
12.4 从视频文件中获取缩略图 464
12.5 访问音乐库 466
第13章 通讯录 474
13.0 介绍 474
13.1 在系统界面上获得联系人记录 476
13.2 在系统界面上获得联系人信息 479
13.3 请求访问通讯录数据库 482
13.4 获取通讯录中全部联系人 484
13.5 获取通讯录联系人的属性 486
13.6 在通讯录中插入联系人信息 489
13.7 在通讯录中插入群组 491
13.8 添加联系人到群组 493
13.9 查找通讯录 496
13.10 获取和设置通讯录联系人的图片 498
第14章 文件与文件夹管理 500
14.0 介绍 500
14.1 获得磁盘上最常用的文件夹路径 502
14.2 对文件进行读写操作 504
14.3 在磁盘中创建文件夹 508
14.4 枚举文件和文件夹 510
14.5 删除文件和文件夹 515
14.6 将对象保存到文件中 518
第15章 摄像头和照片库 521
15.0 介绍 521
15.1 侦测和探查摄像头 522
15.2 用摄像头拍摄照片 526
15.3 用摄像头拍摄视频 530
15.4 在照片库中存储照片 533
15.5 在照片库中存储视频 538
15.6 检索并获取图像和视频 540
15.7 响应图像和视频中的变化 544
15.8 编辑设备中的图像和视频 549
第16章 通知 556
16.0 介绍 556
16.1 发送通知 557
16.2 监听并响应通知 559
16.3 监听并响应键盘通知 562
16.4 安排本地通知 570
16.5 监听并响应本地通知 573
16.6 处理本地系统通知 577
16.7 为应用设置推送通知 580
16.8 向应用发送推送通知 585
16.9 响应推送通知 592
第17章 Core Data 594
17.0 介绍 594
17.1 在Core Data中执行批量更新 595
17.2 向Core Data写入数据 598
17.3 从Core Data中读取数据 600
17.4 从Core Data中删除数据 602
17.5 在Core Data中对数据排序 605
17.6 在表格视图中提升数据访问 606
17.7 在Core Data中实现关系 614
17.8 在后台获取数据 619
17.9 在Core Data模型中使用自定义数据类型 623
第18章 日期、日历和事件 628
18.0 介绍 628
18.1 构建日期对象 629
18.2 获取日期组件 630
18.3 请求日历访问权限 631
18.4 从iOS设备上获取日历组 636
18.5 向日历中添加事件 637
18.6 访问日历内容 642
18.7 从日历中删除事件 644
18.8 向日历中添加重复事件 647
18.9 获取事件的出席者 652
18.10 向日历中添加提醒 654
第19章 图形和动画 657
19.0 介绍 657
19.1 绘制文本 662
19.2 绘制图像 663
19.3 构造可变尺寸图像 667
19.4 画线 671
19.5 构造路径 677
19.6 绘制矩形 681
19.7 为形状添加阴影 684
19.8 绘制渐变 689
19.9 变换视图 694
19.10 进行视图动画 699
第20章 Core Motion 708
20.0 介绍 708
20.1 获取高度数据 709
20.2 获取计步器数据 710
20.3 侦测加速计是否可用 714
20.4 侦测陀螺仪的可用性 716
20.5 获取加速计数据 717
20.6 侦测iOS设备的摇动 720
20.7 获取陀螺仪数据 721
第21章 Cloud 724
21.0 介绍 724
21.1 在您的应用中使用CloudKit 726
21.2 使用CloudKit储存数据 730
21.3 使用CloudKit获取数据 737
21.4 使用CloudKit查询Cloud内容 743
21.5 观察CloudKit中记录的变化 748
21.6 从CloudKit中获取用户信息 756
21.7 在iCloud中储存和同步字典 762
21.8 在iCloud中创建并管理文件和文件夹 766
21.9 在iCloud中搜索文件和文件夹 769

教学资源推荐
作者: 吴黎兵 熊建强 杨鏖丞
作者: 邱李华 曹青 郭志强
作者: 顾元刚 等
参考读物推荐
作者: [美] 米奇·麦卡弗里(Mitch McCaffrey) 著
作者: [美]罗伯特 C.西科德(Robert C. Seacord)著
作者: 陶国荣 著