虽然我们都希望能尽快开始在 Swift 的世界里遨游,但是我觉得仍然有必要花一些时间将本书的写作目的和适合哪些读者进行必要说明。我不喜欢自吹自擂,也无法承担“骗子”的骂名。在知识这件严肃的事情上,我并不希望对读者产生任何的误导。作为读者,您一定想要找的是一本合适自己的书;而作为作者,我也希望找到自己的伯乐和子期。

为什么要写这本书

中文的科技书籍太少了,内容也太浅了。这是国内市场尴尬的现状:真正有技术的大牛不在少数,但他们很多并不太愿意通过出书的方式来分享他们的知识:一方面是回报率实在太低,另一方面是出版的流程过于繁琐。这就导致了市面上充斥了一些习惯于出版业务,但是却丝毫无视质量和素质的流氓作者和图书。

特别是对于 Swift 语言来说,这个问题尤其严重。iOS 开发不可谓不火热,每天都有大量的开发者涌入这个平台。而 Swift 的发布更使得原本高温的市场更上一层楼。但是市面上随处可见的都是各种《开发指南》《权威指南》或者《21天学会XXX》系列的中文资料。这些图书大致都是对官方文档的翻译,并没有什么实质的见解,可以说内容单一,索然无味。作为读者,很难理解作者写作的重心和目的 (其实说实话,大部分情况下这类书的作者自己都不知道写作的重心和目的是什么),这样的“为了出版而出版”的图书可以说除了增加世界的熵以外,几乎毫无价值。

如果想要入门 Swift 语言,阅读 Apple 官方教程和文档无论从条理性和权威性来说,都是更好的选择。而中国的 Cocoa 开发者社区也以令人惊叹的速度完成了对文档的高品质翻译,这在其他任何国家都是让人眼红的一件事情。因此,如果您是初学程序设计或者 Swift 语言,相比起那些泯灭良心 (抱歉我用了这个词,希望大家不要对号入座) 的“入门书籍”,我更推荐您看这份翻译后的官方文档,这是非常珍惜和宝贵的资源。

说到这里,可以谈谈这本《Swifter - 100 个 Swift 必备 tips》的写作目的了。很多 Swift 的学习者 -- 包括新接触 Cocoa/Cocoa Touch 开发的朋友,以及之前就使用 Objective-C 的朋友 -- 所共同面临的一个问题是,入门以后应该如何进一步提高。也许你也有过这样的感受:在阅读完 Apple 的教程后,觉得自己已经学会了 Swift 的语法和使用方式,你满怀信心地打开 Xcode,新建了一个 Swift 项目,想写点什么,却发现实际上满不是那么回事。你需要联想 Optional 应该在什么时候使用,你可能发现本已熟知 API 突然不太确定要怎么表达,你可能遇到怎么也编译不了的问题但却不知如何改正。这些现象都非常正常,因为教程是为了展示某个语法点而写的,而几乎不涉及实际项目中应该如何使用的范例。本书的目的就是为广大已经入门了 Swift 的开发者提供一些参考,以期能迅速提升他们在实践中的能力。因为这部分的中级内容是我自己力所能及,有自信心能写好的;也是现在广大 Swift 学习者所急缺和需要的。

这本书是什么

本书是 Swift 语言的知识点的集合。我自己是赴美参加了 Apple 的 WWDC 14 的,也正是在这届开发者大会上,Swift 横空出世。毫不夸张地说,从 Swift 正式诞生的第一分钟开始,我就在学习这门语言。虽然天资驽钝,不得其所,但是在这段集中学习和实践的时间里,也还算总结了一些心得,而我把这些总结加以整理和示例,以一个个的小技巧和知识点的形式,编写成了这本书。全书共有 100 节,每一节都是一个相对独立的主题,涵盖了一个中高级开发人员需要知道的 Swift 语言的方方面面。

这本书非常适合用作官方文档的参考和补充,也会是中级开发人员很喜爱的 Swift 进阶读本。具体每个章节的内容,可以参看本书的目录。

这本书不是什么

这本书不是 Swift 的入门教程,也不会通过具体的完整实例引导你用 Swift 开发出一个像是计算器或者记事本这样的 app。这本书的目的十分纯粹,就是探索那些不太被人注意,但是又在每天的开发中可能经常用到的 Swift 特性。这本书并不会系统地介绍 Swift 的语法和特性,因为基于本书的写作目的和内容特点,采用松散的模式和非线性的组织方式会更加适合。

换言之,如果你是想找一本 Swift 从零开始的书籍,那这本书不应该是你的选择。你可以在阅读 Apple 文档后再考虑回来看这本书。

组织形式和推荐的阅读方式

100 个 tips 其实不是一个小数目。本书的每个章节的内容是相对独立的,也就是说你没有必要从头开始看,随手翻开到任何一节都是没问题的。当然,按顺序看会是比较理想的阅读方式,因为在写作时我特别注意了让靠前的章节不涉及后面章节的内容;另一方面,位置靠后的章节如果涉及到之前章节内容的话,我添加了跳转到相关章节的链接,这可以帮助迅速复习和回顾之前的内容。我始终坚信不断的重复和巩固,是真正掌握知识的唯一途径。

本书的电子版的目录是可以点击跳转的,您可以通过目录快速地在不同章节之间导航。如果遇到您不感兴趣或者已经熟知的章节,您也完全可以暂时先跳过去,这不会影响您对本书的阅读和理解。

代码运行环境

建议您一边阅读本书时一边开启 Xcode 环境并且对每一章节中的代码进行验证,这有利于您真正理解代码示例想表达的意思,也有利于记忆的形成。随本书所附的 Playground 文件中有大部分章节的示例代码,以供参考。每一段代码示例都不太长,但却是经过精心准备,能很好地说明章节内容的,希望您能在每一章里都能通过代码和我进行心灵上的“对话”。您也可以在已有的基础上进行自己的探索,用来加深对讨论内容的理解。

书中每一章基本都配有代码示例的说明。这些代码一般来说包括 Objective-C 或者 Swift 的代码。理论上来说所有代码都可以在 Swift 2.0 (也就是 Xcode 7) 版本环境下运行。当然 因为 Swift 版本变化很快,可能部分代码需要微调或者结合一定的上下文环境才能运行,但我相信这种调整是显而易见的。如果您发现明显的代码错误和无法运行的情况,欢迎到本书的 issue 页面 上提出,我将尽快修正。

如果没有特别说明,这些代码在 Playground 和项目中都应该可以运行,并拥有同样表现的。但是也存在一些代码只能在 Playground 或者项目文件中才能正确工作的情况,这主要是因为平台限制的因素,如果出现这种情况,我都会在相关章节中特别加以说明。

勘误和反馈

Swift 仍然在高速发展和不断变化中,本书最早版本基于 Swift 1.0,当前版本基于 Swift 2.0。随着 Swift 的新特性引入以及错误修正,本书难免会存在部分错误,其中包括为对应的更新纰漏或者部分内容过时的情况。虽然我会随着 Swift 的发展继续不断完善和修正这本书,但是这个过程亦需要时间,请您谅解。

另外由于作者水平有限,书中也难免会出现一些错误,如果您在阅读时发现了任何问题,可以到这本书 issue 页面进行反馈。我将尽快确认和修正。得益于电子书的优势,本书的读者都可以在本书更新时免费获得所有的新内容。每次更新的变更内容将会写在本书的更新一节中,您也可以在更新内容页面上找到同样的列表。

版权问题

为了方便读者使用和良好的阅读体验,本书不包含任何 DRM 保护。首先我在此想感谢您购买了这本书,在国内知识产权保护不足的现状下,我自知出版这样一本没有任何保护措施的电子书可能无异于飞蛾扑火。我其实是怀着忐忑的心情写下这些文字的,小心翼翼地希望没有触动到太多人。如果您不是通过 GumroadLeanpub 或者是 SelfStore 购买,而拿到这本书的话,您应该是盗版图书的受害者。这本书所提供的知识和之后的服务我想应该是超过它的售价 (大约是一杯星巴克咖啡的价格) 的,在阅读前还请您再三考虑。您的支持将是我继续更新和完善本书的动力,也对我继续前进是很大的鼓励。

关于购买这本书更详细的信息,请参看 购买图书 的相关内容

另外,这本书也有纸质版本,但是暂时是面向 Swift 1.2 的。如果您有意阅读,可以搜索 “Swifter:100个Swift开发必备Tip” 来获取相关信息。

作者简介

王巍 (onevcat) 是来自中国的一线 iOS 开发者,毕业于清华大学。在校期间就开始进行 iOS 开发,拥有丰富的 Cocoa 和 Objective-C 开发经验,另外他也活跃于使用 C# 的 Unity3D 游戏开发界。曾经开发了《小熊推金币》,《Pomo Do》等一系列优秀的 iOS 游戏和应用。在业余时间,王巍会在 OneV's Den 撰写博客,分享他在开发中的一些心得和体会。另外,王巍还是翻译项目 objc 中国 的组织者和管理者,为中国的 Objective-C 社区的发展做出了贡献。同时,他也很喜欢为开源社区贡献代码,是著名的 Xcode 插件 VVDocumenter 和开源库 Kingfisher 的作者。

现在王巍旅居日本,并就职于即时通讯软件公司 Line,从事 iOS 开发工作,致力于为全世界带来更好体验和功能的应用。如果您需要进一步了解作者的话,可以访问他的资料页面