本博客已停止维护,仅供浏览存档内容。了解详情 »

Swift 自学记

自从 Camarts iOS app 上架以来,不少朋友都好奇于我是如何从零开始,在几天时间里学会 Swift 的。那我就大概总结一下学习 Swift 的过程吧,希望可以对正在自学编程的朋友们有所帮助。不过要先说明一下:我现在只是用 Swift 写了一个功能简单的 app 而已,还远远算不上真正“学会”了它,姑且算是“入门”了吧。

其实早在三四年前我就开始对 iOS 开发感兴趣了,但当时的重心主要在 Web 设计和开发方面,没有多余的时间和精力来学一个完全陌生的编程语言。直到今年的 WWDC 之后,为了提前用上测试版的 iOS 9,便心血来潮地交了一百多美元加入了 Apple Developer Program。既然开发者身份都已经有了,那就顺便学一点吧,也是时候再学点新东西了。

于是我就抱着随便学着玩玩的心态打开在我的 iBooks 书架上尘封已久的 Apple 官方 Swift 教程,用几个小时快速扫了一遍 Language Guide,期间没有刻意去记忆任何内容,只求对 Swift 的基本语法有点点印象。看到 Language Reference 部份时开始觉得有点枯燥,就把书一扔,到 Github 上找了几个项目来研究。不过,当我看到第一个完整 app 的代码时,心里顿时凉了半截,表情如下图所示:

wtf-is-this

代码看起来虽然都有点似曾相识的感觉,可就是完全看不懂啊!这和五年前我初学 PHP 时看到 WordPress 核心代码的感觉差不多。更惨的是,因为 Swift 是个新语言,语法一直在不断变化,而 Github 上的项目大多没有及时更新,所以根本运行不起来,我也只能一脸茫然地看着屏幕上密密麻麻的红色感叹号和完全看不懂的错误提示。

在 Github 上提交了几个 Issues 之后,等了两天依然没有修复,果然求人还是不如靠自己,于是找了一个最简单的项目开始认真研究,从头开始理解和思考每一行代码,遇到不懂或者报错的地方就 Google 和查文档,还解决不了的问题就到 Stack Overflow 上找遇到同样问题的人,看看他们是如何解决的。到这一步,基本上 99% 的问题都可以解决掉了,剩下的 1% 就得运用发散性思维,查类似的问题再举一反三,不断尝试和修改。在这个过程中,还意外发现了不少好教程。

在消灭掉所有的错误提示之后,我也把这个项目的代码从头到尾的看了一遍。这时我才对 Swift 的语法有了真正清晰的认识,再看相对复杂些的项目也好理解了很多。还学会了用 NSURLConnection 从服务器的 API 异步获取信息,然后用 NSJSONSerialization 来解析 json 数据,再把它放进 UITableViewController 里显示出来。

终于是时候开始做自己的 app 了,也就是我摄影网站 Camarts 的客户端——只不过当时只是想“做着玩玩”而已,并不敢想像在短短几天之后它竟然能成为一个可以上架 App Store 的项目。因为服务器端的 API 早已开发好,所以运用上面提到的知识和经验,轻轻松松就实现了一个可以浏览最新几篇作品的列表。

成就感果然是最好的动力来源,在接下来的几天里,我又学会用 UIStoryboardSegue 来在各个 ViewController 之间传递数据、通过 UIWebView 来显示正文页面,并在 UITableView 的基础上举一反三,应用在 UICollectionView 上,还有用于在 iOS 原生应用里实现响应式设计的 AutoLayout 等等。遇到不明白的地方还是通过之前提到的方法解决,在开发期间经常保持两个浏览器各开着几十个网页的状态。主要功能完成之后,再优化一下界面细节,配上几个好看的图标,不知不觉间,它就变成了一个功能完善的、达到 App Store 上架标准的应用。

所以说,在做的过程中学习往往是最有效的。我的自学“原理”其实很简单:只有兴趣作为推力,而没有任何功利做拉力。这也是我作为一个 homeschooler 的学习过程的一个缩影。不过,如果说开发这个小小的 app 也算是一种创造的话,恐怕我的创造力还有很大的提升空间,因为创造的动力不仅源于个人兴趣,更植根于个人的动手能力、格物致知的水平,还有庞大的知识面以及驾驭知识的能力。而这后两者,我还自感欠缺,还有很长的路要走。

另附上我学习和参考过的一部份教程和开源项目。感谢它们的作者,使这种自学方式成为可能。

相关教程

Getting Started With UITableView in Swift
A Swift iOS 8 Storyboard-based Collection View Tutorial – Techotopia
UICollectionView Tutorial Part 1: Getting Started – Ray Wenderlich
UICollectionView Tutorial Part 2: Reusable Views and Cell Selection – Ray Wenderlich
iOS Swift Tutorial : UICollectionView Pinterest Layout
Swift Swift: Using Tab Bar Controllers in Swift | Making App Pie
Introduction to Auto Layout in iOS Programming
Auto Layout Tutorial in iOS 9 Part 1: Getting Started – Ray Wenderlich
Auto Layout Tutorial in iOS 9 Part 2: Constraints – Ray Wenderlich
Video Tutorial: iOS 101 with Swift Part 3: Beginning Auto Layout – Ray Wenderlich
Activity Indicator Tutorial in iOS8 with Swift – iOScreator
Use Settings With NSUserDefaults – iOScreator
UISwitch Tutorial in iOS8 with Swift – iOScreator
Add iOS 9’s Quick Actions Shortcut Support – stringCode

开源项目

synboo/SwiftFlickrApp
kaiinui/Swift-UICollectionView-AFNetworking
jxd001/Swift-ZhihuDaily
xhzengAIB/XHNewsParsingSwift
amitburst/HackerNews

扫描二维码可分享到微信
或点击此处分享到新浪微博