Swift Playgrounds
在2014年,蘋果公司的世界開發(fā)者大會(huì)上,蘋果推出了讓所有iOS開發(fā)驚訝的新的編程語言Swift。Swift被宣傳為“快速,現(xiàn)代,安全,交互”編程語言。Swift語言簡單易學(xué)并且擁有很多提高編程效率的特征。

在Swift語言推出之前,iOS app主要由Objective-C語言編寫。蘋果公司選擇這門語言作為Mac和iOS開發(fā)的主語言已經(jīng)有20多年時(shí)間了。我和很多iOS開發(fā)人員交流過。他們中的大部分都認(rèn)為Objective-C不易學(xué)習(xí)并且語法怪異。簡而言之,Objective-C 代碼嚇到了不少開始學(xué)習(xí)iOS編程的初學(xué)者。Swift編程語言的發(fā)布可能就是蘋果公司對這些評論的一種答復(fù)。Swift的語法更加整潔并且容易閱讀。從Swift的beta版本發(fā)布我就開始使用它編程。我想說,你肯定會(huì)認(rèn)同使用Swift開發(fā)會(huì)更有效率。Swift確確實(shí)實(shí)加速了開發(fā)進(jìn)程。一旦你習(xí)慣了使用Swift編程,你將不再愿意再使用Ojbective-C。
在我看來,Swift將會(huì)吸引更多的網(wǎng)絡(luò)開發(fā)人員開發(fā)App。如果你是一名具有某種腳步語言編程經(jīng)驗(yàn)的網(wǎng)絡(luò)開發(fā)人員,你的經(jīng)驗(yàn)將會(huì)幫助你更好的掌握iOS開發(fā)知識。對你來說Swift學(xué)習(xí)將會(huì)很簡單。即使你完全沒有編程經(jīng)驗(yàn)也沒有關(guān)系,你會(huì)發(fā)現(xiàn)這門語言很友好并且使用Swift開發(fā)app感覺非常自然。
讓我們通過對比以下程序片段,初步了解一下Swift語言。

第一段代碼是由Objective-C編寫的,而第二段代碼是由Swift編寫的。你喜歡哪種語言呢?我猜想你會(huì)更喜歡Swift,特別是你會(huì)覺得Objective-C的語法非常怪異。常量和變量是編程語言中最基本的兩個(gè)元素。在Objective-C中,當(dāng)你聲明一個(gè)常量或者變量時(shí),你需要指明類型信息,比如integer或者string。對于Swift,引入了一種新的功能,名叫類型推斷(Type inference)。你不再需要說明變量或者常量的類型信息。你只需要使用let說明常量和使用var說明變量即可。Swift足夠智能,可以通過檢查你提供的值來推斷類型。
你可能注意到了另外一個(gè)不同:Swift省略了隊(duì)尾的分號。在Objective-C,你在句尾梳寫分號。如果你忘記了分號,將會(huì)編譯錯(cuò)誤。很多Objective-C的初學(xué)者都經(jīng)歷過這種錯(cuò)誤。Swift語言會(huì)讓你的開發(fā)更加簡單。Swift增加了許多強(qiáng)力特征讓你的編程工作更加流暢。正如你在上面的例子中看見的,String(字符串)的維護(hù)更加簡單。在Objective-C中,你需要選擇NSString和NSMutableString類型來暗示該String是否可以背修改。在Swift中你不必這樣做。無論什么時(shí)候你將一個(gè)字符串String聲明為變量,在你的程序里你都可以修改這個(gè)字符串。連接字符串非常簡單。只要使用+號就可以連接兩個(gè)字符串。更進(jìn)一步,Swift允許你直接使用==符號對比字符串。
學(xué)習(xí)編程最好的方法就是直接寫程序。Xcode 6新增了一個(gè)功能叫做Playgrounds。這是一個(gè)交互式開發(fā)環(huán)境,開發(fā)者可以在該環(huán)境里實(shí)驗(yàn)編程并且可以直接看到程序運(yùn)行結(jié)果。假設(shè)你安裝了Xcode 6(或者以上),運(yùn)行Xcode,你會(huì)看到如下開始界面。

Playground是一種特別類型的Xcode文件。你只需要點(diǎn)擊“Start with a Playground”,然后在彈出的界面填寫項(xiàng)目名和選擇平臺(tái)類型。你可以使用默認(rèn)的名字或者自己命名,但記得需要選擇iOS平臺(tái)。

一旦你確認(rèn)并保存信息文件完畢,Xcode將會(huì)打開如下Playground交互界面。你會(huì)在屏幕中看到在屏幕的左邊面板,是你編輯代碼的界面。

當(dāng)你在左邊輸入代碼時(shí),Playground將立即解釋你的代碼并在右側(cè)面板顯示結(jié)果。默認(rèn)情況下,Playground包含兩行代碼。你可以在右側(cè)面板立刻看到“Str”聲明的結(jié)果。
我們一起來寫一些代碼。這個(gè)練習(xí)的目的是讓你初步接觸一下Swift編程并且對Xcode有個(gè)初步的印象。在講述過程中我將會(huì)解釋一部分代碼。但是即使你看不懂任何一行代碼也沒有關(guān)系,特別是你還是一個(gè)新手的話。我想你會(huì)對一些術(shù)語比如:類,方法等感到困惑 。現(xiàn)在,不要多想,全身放松地去使用Xcode。我們將再后面的章節(jié)介紹這些概念 。
讓我們馬上開始。
首先,讓我們看一下兩行代碼的關(guān)鍵字。這里我們又定義了兩個(gè)變量

當(dāng)你輸入上面的代碼時(shí),你馬上可以在右側(cè)的面板上看到結(jié)果

讓我們繼續(xù)增加下面的代碼
message1 .uppercaseString
Xcode的編輯器會(huì)彈出一個(gè)自動(dòng)完成功能。自動(dòng)完成功能是一項(xiàng)非常友好的能夠幫助你快速完成代碼的功能。一旦你輸入“mess”,你將會(huì)看到一個(gè)自動(dòng)完成窗口,里面會(huì)給出一些基于你的輸入的一些建議。這時(shí)你需要做的就是選擇“message1”并且敲擊回車。

Swift使用點(diǎn)(.)語法來實(shí)現(xiàn)方法調(diào)用或者訪問變量的屬性。當(dāng)你在message1后面輸入點(diǎn)時(shí),自動(dòng)完成窗口會(huì)再一次彈出。里面會(huì)列出一系列屬于該變量的方法或者屬性。你可以繼續(xù)輸入“uppercaseString”或者從自動(dòng)完成窗口選擇。
一旦你完成輸入,你可以立刻在輸出窗口看到結(jié)果。當(dāng)你使用UppercaseString屬性,message1的內(nèi)容將會(huì)自動(dòng)
轉(zhuǎn)換成大寫。
繼續(xù)輸入以下代碼

Swift允許你使用+號連接兩個(gè)字符串(String)。上面這行代碼將message2的內(nèi)容轉(zhuǎn)換成小寫,
并且和另一個(gè)string連接在一起。更有趣的是,你可以在你的代碼中包含emoji字符圖形。你可能會(huì)問如何在MaxOS中輸入emoji字符。很簡單,按下control+command+spacebar(控制+命令+空格鍵),就會(huì)出現(xiàn)emoji圖形選擇窗口。
讓我們繼續(xù)輸入下面的代碼片段:

條件邏輯在編程中非常常見。有時(shí)候,當(dāng)某個(gè)添加滿足時(shí)你想執(zhí)行某一段確定的代碼。if-else語句是Swift提供的控制流方法之一。在這段代碼中,我們使用==操作符對比了message1和message2。如果它們相等,程序會(huì)打印出“Same message”。否則,將會(huì)打印出“Not the same message”。你將會(huì)在你的屏幕中看到如下結(jié)果。

讓我們做一點(diǎn)更有趣的事情,例如創(chuàng)建一個(gè)標(biāo)簽(label),這在用戶界面中非常常見:

這里我們使用內(nèi)建的UILabel 類創(chuàng)建了一個(gè)label并且設(shè)置它的大小為300*50。我們把它的text屬性設(shè)置為
message1.為了在Playground中預(yù)覽UI元素,你可以點(diǎn)擊快速查看(Quick Look)或者歷史值(Value History)圖標(biāo)??焖俨榭垂δ芡ㄟ^一個(gè)彈出窗口顯示label。如果你使用歷史值(Value History),則Playground會(huì)打開一個(gè)獨(dú)立的預(yù)覽面板

剛才的label是一個(gè)毫無特色的label。改變它的顏色應(yīng)該是個(gè)不錯(cuò)的想法。不錯(cuò)的是,你只需要一行代碼就可以定制顏色。你還可以很容易的中間對齊文本或者將label設(shè)置成圓角。輸入如下代碼你將會(huì)看到一個(gè)橘黃色的圓角label。

這就是iOS SDK的強(qiáng)大能力。它里面包含了成千上萬的預(yù)定義的元素,并且開發(fā)人員只需要很少的代碼就可以定制這些元素。

要說一下,不要被我誤導(dǎo)了。一般來說創(chuàng)建用戶界面你不需要輸入代碼。Xcode提供一個(gè)叫Storyboard(故事板)的功能,你可以通過拖拽來設(shè)計(jì)UI。我們將會(huì)再下一章講述。
所以你現(xiàn)在對Swift已經(jīng)有初步概念了。你現(xiàn)在感覺Swift怎么樣呢?喜歡它嗎?我希望你能感覺到Swift非常容易學(xué)習(xí)和使用。最重要的是,我希望Swift不會(huì)讓你不再想開發(fā)app。下一章,你將會(huì)學(xué)到如何創(chuàng)建你的第一個(gè)app。
專題目錄:
第二章:使用Storyboard設(shè)計(jì)用戶界面(一)