Swift--在 30 天内,从零开始学习 Swift

本文是翻译,版权归原作者所有




确切地说,我是在 30 天前开始学习 Swift 语言的。三天前,我的第一个对外公测版的应用被 Apple 审核通过了。这个对外公测的版本和最终产品比较起来,算不上什么,但是对我而言,这是一次极大的成就。

我没有计算机科学的学位,也没有做为开发人员所需要的专业经验,但是最近 5 年,我在软件开发组里的角色是产品经理,本着玩的心态,曾经做了一些 Ruby on Rails 方面的应用。我一直想和我忙碌的工作取得更加直接的联系,因此我决定开始写代码。

为什么选择 iOS 和 Swift?

  1. 庞大的移动;私人化的移动。我想做一款人们真正在用的软件,人们和他们的手机有着亲密感,我爱这种感觉。我们的手机太懂我们了——我们什么时候起床、睡觉,我们在哪里以及怎样去那里,我们的日程表,和朋友、家人的交谈等。这是我感兴趣的地方,我很早就是一名 Apple 用户了,当然从 iOS 开始比较好了。我短暂地体验了一把 Objective-C,它比较恐怖,而 Swift 一直都受人喜欢。
  2. 约束的好处。Apple 平台,可装入口袋的屏幕,在这种范围内去开发应用,就需要良好的约束。这些约束让我专注于要学习的东西(与之相对的是,web 开发中深不见底的兔子洞【注4】),并促使我围绕用户体验进行创新。
  3. Swift 是一门快速发展的语言。我喜欢在刚开始时参与,观察该语言的发展及演化,并成为小社区的一分子——这就是我为什么喜欢在创业公司工作的原因。创业公司允许用一种相对不太成熟的语言来攻关某个问题,加入更小的群组,尽量让人和事衔接起来。对于向语言和社区贡献一己之力的可能性,我感到兴奋。

初学者资源

7 月 1 号,我开始了这段旅程,当时的想法是做一个真正简单的应用。始终把这一点摆在最高位置,有助于激励我、并应用我学到的东西。

为了找到 Swift 相关的最好资源、教程和课程,我投入了很长时间在互联网上搜罗。有很多面向初学者的优秀资料,但是大部分都假设你从来没有写过一行代码,起点非常低。比如,这是一个变量,看下变量跳转。另一些资料是技术文章和参考材料(包括 Apple 的文档),貌似有个前提:你有丰富经验、或从 Objective-C 转到了 Swift。

下面是一些不错的资源,对于我这种水平的初学者,我觉得非常有用:

  1. Paul Hegarty 的斯坦福大学课程《Developing iOS8 Apps with Swift》,可免费在 iTunes U 【注1】里获取。我从这里开始,在一个多星期里,听了前五节课,又做了一份家庭作业。这份教程很快就变得有挑战了,因此在我入门之后,为了找到下面更实用的教程,我暂停了这个进度。不过,这是一份非常棒的课程,Paul Hegarty 教授熟悉他的资料,因此我打算回头继续学。如果你在练习上遇到了困难(你在 iTunes U 里找不到解决方案),那么这个网站解释了每个问题的设置和方法。
  2. Apple 推出的 Swift 编程语言教程。如果你之前有过一些编程经验,这本 Swift 语言的书,和 Apple 的 iOS SDK 文档相比,将非常易于阅读。它清晰、扼要、可快速浏览,当你碰到问题时,你能明白在哪里能够找到某些概念。Big Nerd Ranch 针对其训练营打造了一份《Swift Pre-reading Assignment》,包含了类似概念,但为初学者准备了更多实用的例子,供你练习。
  3. www.raywenderlich.com。这像是某个家伙的个人网站,但是不要被它的外表欺骗了。这个网站是我曾经遇到过的、最好的资源站。如果你从未创建过 iOS 应用,那就注册 newsletter,访问「史诗般的教程」吧——有那么一刻,感觉其极具史诗风格,但是,如果你愿意,用一天时间就能搞定。这个教程让我初次深入 iOS 开发的古怪世界,为我们揭开了很多容易让初学者望而生畏的秘密。我自己在开发自己的应用时,会参考这份教程,以唤醒我对 Xcode 里的某些特性或功能的记忆。在你学完这一份教程之后,该网站还有大量另外的免费教程,我精心挑选着学了一些概念,它们对于我做应用的想法有帮助。有如此多的优秀内容,以致于我早点儿想回去看看。

(大概的)时间线

  • 第一周:沉浸其中。我沉浸在斯坦福课程里的演讲和练习里,通读了大量 Swift 语言书籍,完成了来自于 www.raywenderlich.com 的「史诗般教程」。之后,我就准备开始着手我的应用了。
  • 第二、第三周:打磨。在我开始写代码的那一天,我碰巧启动了为期 12 天的、在缅因州的帆船上的生活。咖啡、平静的水面,我每天早上在这个地方待上好几个小时。这里不能上网,我可以高度集中在 Xcode 里,而不用在 40 个浏览器标签里来回穿梭。这迫使我停下来,认真思考了我正在尝试做的事情及其原因。在这些天里,我发现自己在思考代码时,会想出新方法,第二天早上就迫不及待地尝试。
  • 第四周:我目前正在做的事情。有一根陡峭的学习曲线,但是和前几周相比,我在一天里有着更高的效率,感觉太神奇了。在最后一天,我清理了代码,弄通了奇怪的边界情形【注2】,令人惊奇、着实满意。做为产品经理,我对这些场景感到厌烦,把多个小任务分配给工程师。我自己就有能力去除这些工作,感觉不错。最后,我用 Sketch 创建了一个基本的应用图标,按照步骤上传到了 iTunes Connect,并做为公测应用提交给了 Apple。这个版本用了不到 24 小时。

在 7 月份(根据 RescueTime 统计),我在 Xcode 花了 25 小时,在 iOS 模拟器上花了 2 小时 52 分钟,在预览【注5】上花了 4 小时 23 分钟(阅读教程),在 Stack Overflow 上花了 51 分钟。我还在手机上阅读了很多资料。

Swift 社区

我还做了一些其它事情,让自己融入 Swift 社区:

说了这么多,都是我觉得有帮助的。如果你有其它的优秀资源想推荐,请在评论里,把你喜欢的东东、以及它为什么好的理由都写上。

我第一次参加的 meetup 是由 Dave Grandinetti 发表的「Learning Swift the Euler Way」演讲。Dave 开发了一个工具 EulerKit,我很激动地签出了,它包含了一些 helper 方法,能为解决 Project Euler问题助一臂之力。我参加了前两次,此后就有些吃力。

最后,我的第一个应用——RoundTrip

我的应用,名字是 RoundTrip,面向那些乘坐大都会运输署(MTA)【注3】的公交、且喜欢优化他们地铁费用的纽约人。这是一款非常简单的工具应用。

RoundTrip?—?MTA 的应用,敬请期待!

  1. 算出向你的 MetroCard 充入多少钱,以致于不会剩下用不到的钱。如果你充值超过 5.5 美元,MTA 将给你 11% 的奖金,且充值的最小幅度只能是 5 美分。这两个条件交织在一起,让匆忙行走的人们做心算,情何以堪呀。
  2. 评估你每月的乘坐次数,和买一张 30 天的、无限制的 MetroCard 做对比,看能否省钱。你还能记录你的行程,查看你乘坐频率的统计。

如果你想成为公测人员、或想知道什么时候可以获取这个应用,请在这里注册、或关注 @helloroundtrip

感谢了解我的旅程,感谢 @cm 和 @amrithap,帮我评审本文的初稿。

我正在寻找一份工作、或以实习生身份做 iOS 开发人员!如果你有机会,请联系 [email protected] 。

我的 twitter 是 @katiesmillie,网站是 katiesmillie.com


  • 注1:iTunes U是一种网络公开课,诸多名校如:哈佛、MIT、牛津等都把自己的课堂的音频、视频、文档,放在网上,可以通过itunes这款软件来下载。 iTunes U都是免费的。http://baike.baidu.com/view/5418286.htm
  • 注2:An edge case is a problem or situation that occurs only at an extreme (maximum or minimum) operating parameter. https://en.wikipedia.org/wiki/Edge_case
  • 注3:大都会运输署(Metropolitan Transportation Authority,一般简称 MTA),亦称为大都会捷运局,是管理纽约市公共交通的管理机构,成立于1967年,管辖著范围达4000平方英里、总人口1800万的大纽约地区(包含纽约市五大区、纽约州12个县、新泽西州及康乃狄克州部分地区)内的交通运输,该机构拥有并管理纽约地铁、公共汽车及渡轮。其辖下单位包括纽约市公共运输局、大都会北方铁路、长岛铁路、长岛公车公司、桥梁暨隧道管理局、以及大都会运输署公车公司。http://zh.wikipedia.org/wiki/%E7%B4%90%E7%B4%84%E5%A4%A7%E9%83%BD%E6%9C%83%E9%81%8B%E8%BC%B8%E7%BD%B2
  • 注4:”down the rabbit hole”, 是一种隐喻,表示进入了一个未知、奇幻或精神上错乱的地方,在电影《爱丽丝梦游仙境》里有被用到:https://en.wikipedia.org/wiki/Rabbit_hole。《爱丽丝梦游仙境》是路易斯·卡罗(Lewis Carroll)出版的儿童文学作品。故事的主角爱丽丝,从兔子洞掉进一个充满奇珍异兽的梦幻世界,遇到各种懂得说话的动物。这童话1865年出版,一直深受不同年纪的读者喜爱。https://zh.wikipedia.org/wiki/%E7%88%B1%E4%B8%BD%E4%B8%9D%E6%A2%A6%E6%B8%B8%E4%BB%99%E5%A2%83
  • 注5:预览程式(Preview)是Mac OS X操作系统中的影像检视器及PDF阅读器。跟Mac OS X本身一样,是从NeXT的OpenStep操作系统里衍生出来的。 https://zh.wikipedia.org/wiki/%E9%A0%90%E8%A6%BD%E7%A8%8B%E5%BC%8F


译文: 《在 30 天内,从零开始学习 Swift 》| 腊八粥

时间: 2024-10-16 16:49:12

Swift--在 30 天内,从零开始学习 Swift的相关文章

从零开始学Swift之Hello World进化版

上节课,也就是昨晚啦,我们学习到从零开始学Swift之Hello World,那一节只有一句代码,大家会觉得不够过瘾.那么这节课,就给大家来多点瘾货吧! 先上图! //var 代表变量的类型, start 代表变量的名称, "Hello" 代表变量的值. var start = "Hello" var dot = " , " var end = "world!" // let 是什么意思呢? let total = start

从零开始学Swift之Hello World

大家好,欢迎来和我一起学习Swift,一起成长. 这将会是一个系列,从基础入门到会独立开发一个完整的App. 首先,假定你已经有了mac,装了Xcode 6.0,接着,开始吧. 如果你的电脑是Windows 那就先看这篇文章:Windows 下如何安装苹果系统,装完后,下载Xcode 6并安装. ==============================华丽的分割线================================ 1.打开Xcode 6.0,选择Create a new Xco

《从零开始学Swift》学习笔记(Day 11)——数据类型那些事儿?

原创文章,欢迎转载.转载请注明:关东升的博客    在我们学习语言时都会学到这种语言的数据类型,在Swift中数据类型有那些呢?整型.浮点型.布尔型.字符.字符串这些类型是一定有的,其中集合.枚举.结构体.类也是Swift中的数据类型.元组是Swift中特有的. 其他那些类型我们可能多少知道些或是听说过.元组是在Swift中有的,它是什么呢? 它是一种数据结构,在数学中应用广泛.在计算机科学中,元组是关系数据库中的基本概念,元组表中的一条记录,每列就是一个字段.因此在二维表里,元组也称为记录.

《从零开始学Swift》学习笔记(Day 57)——Swift编码规范之注释规范:

<从零开始学Swift>学习笔记(Day 57)--Swift编码规范之注释规范:文件注释.文档注释.代码注释.使用地标注释 原创文章,欢迎转载.转载请注明:关东升的博客 前面说到Swift注释的语法有两种:单行注释(//)和多行注释(/*...*/).这里来介绍一下他们的使用规范. 文件注释 文件注释就在每一个文件开头添加注释,文件注释通常包括如下信息:版权信息.文件名.所在模块.作者信息.历史版本信息.文件内容和作用等. 下面看一个文件注释的示例: /* Copyright (C) 201

Swift从零开始学习_06

Swifit第六天 今天我准备主动寻求点变化, 之前一直在学习Swift的语法, 还是不够直观.简单就是知道了语法可还是不知道到底该怎么用Swift去做项目, 所以今天就没有去看Swift的语法, 而是自己摸索着去做一个Swift的简单的应用, 试试创建类等等, 是跟OC类比这写的.首先我们创建一个empty applicatio项目, 语言选择Swift, 创建完成后如下. 这时候我们点开AppDelegate.swift看到的会是这样的 这里我们会看到很多, 虽然语法不一样, 但是其实大体我

《从零开始学Swift》学习笔记(Day 71)——Swift与C/C++混合编程之数据类型映射

原创文章,欢迎转载.转载请注明:关东升的博客 如果引入必要的头文件,在Objective-C语言中可以使用C数据类型.而在Swift语言中是不能直接使用C数据类型,苹果公司为Swift语言提供与C语言相对应数据类型.这些类型主要包括:C语言基本数据类型和指针类型. C语言基本数据类型 如表所述是Swift数据类型与C语言基本数据类型对应关系表. Swift语言中的这些数据类型与Swift原生的数据类型一样都,本质上都是结构体类型.我们可以他们的构造函数创建这些数据类型的实例.示例代码如下: va

《从零开始学Swift》学习笔记(Day 14)——字符串的插入、删除和替换

原创文章,欢迎转载.转载请注明:关东升的博客 对应可变字符串可以插入.删除和替换,String提供了几个方法可以帮助实现这些操作.这些方法如下: splice(_:atIndex:).在索引位置插入字符串. insert(_:atIndex:).在索引位置插入字符. removeAtIndex(_:).在索引位置删除字符. removeRange(_:).删除指定范围内的字符串. replaceRange(_:,with: String) .使用字符串或字符替换指定范围内的字符串. 代码: va

Swift从零开始学习_07(UI界面实践中学习Swift)

昨天试了下写代码后感觉写比只是看好很多, 所以今天就又写了一点东西, 主要是类的属性.以及继承和xib等一些知识, 也遇到了很多麻烦, 不过好在都已经解决了, 这里简单写一下今天的代码, 有什么不对的地方了, 还是希望提出来. 先看一下做的第一个简单的页面:点击第二个按钮, 下面的视图变化颜色, 点击第一个按钮, 模态一个页面 首先是我们之前写OC代码时候在.h里面声明的一些属性, 在Swift怎么声明呢?,方法如下: var array:NSMutableArray = NSMutableAr

Swift从零开始学习_08(代理协议传值)

Swift中的代理协议的写法.    这是第一个页面有一个button和一个label, button点击跳到下一个页面. 第二个页面有一个输入框和一个按钮, 点击按钮把输入框里的内容设置为第一个页面label的内容.效果如下 接下来是代码部分.跟OC的写法还是一样的.这里不再写第一个页面的那些UI的代码.直接看第二个页面的代码. import UIKit protocol SecondViewControllerDelegate{ func changeLabelText(#textStr:S