Swift Playgrounds
在2014年,蘋果公司的世界開發者大會上,蘋果推出了讓所有iOS開發驚訝的新的編程語言Swift。Swift被宣傳為“快速,現代,安全,交互”編程語言。Swift語言簡單易學并且擁有很多提高編程效率的特征。
在Swift語言推出之前,iOS app主要由Objective-C語言編寫。蘋果公司選擇這門語言作為Mac和iOS開發的主語言已經有20多年時間了。我和很多iOS開發人員交流過。他們中的大部分都認為Objective-C不易學習并且語法怪異。簡而言之,Objective-C 代碼嚇到了不少開始學習iOS編程的初學者。Swift編程語言的發布可能就是蘋果公司對這些評論的一種答復。Swift的語法更加整潔并且容易閱讀。從Swift的beta版本發布我就開始使用它編程。我想說,你肯定會認同使用Swift開發會更有效率。Swift確確實實加速了開發進程。一旦你習慣了使用Swift編程,你將不再愿意再使用Ojbective-C。
在我看來,Swift將會吸引更多的網絡開發人員開發App。如果你是一名具有某種腳步語言編程經驗的網絡開發人員,你的經驗將會幫助你更好的掌握iOS開發知識。對你來說Swift學習將會很簡單。即使你完全沒有編程經驗也沒有關系,你會發現這門語言很友好并且使用Swift開發app感覺非常自然。
讓我們通過對比以下程序片段,初步了解一下Swift語言。
第一段代碼是由Objective-C編寫的,而第二段代碼是由Swift編寫的。你喜歡哪種語言呢?我猜想你會更喜歡Swift,特別是你會覺得Objective-C的語法非常怪異。常量和變量是編程語言中最基本的兩個元素。在Objective-C中,當你聲明一個常量或者變量時,你需要指明類型信息,比如integer或者string。對于Swift,引入了一種新的功能,名叫類型推斷(Type inference)。你不再需要說明變量或者常量的類型信息。你只需要使用let說明常量和使用var說明變量即可。Swift足夠智能,可以通過檢查你提供的值來推斷類型。
你可能注意到了另外一個不同:Swift省略了隊尾的分號。在Objective-C,你在句尾梳寫分號。如果你忘記了分號,將會編譯錯誤。很多Objective-C的初學者都經歷過這種錯誤。Swift語言會讓你的開發更加簡單。Swift增加了許多強力特征讓你的編程工作更加流暢。正如你在上面的例子中看見的,String(字符串)的維護更加簡單。在Objective-C中,你需要選擇NSString和NSMutableString類型來暗示該String是否可以背修改。在Swift中你不必這樣做。無論什么時候你將一個字符串String聲明為變量,在你的程序里你都可以修改這個字符串。連接字符串非常簡單。只要使用+號就可以連接兩個字符串。更進一步,Swift允許你直接使用==符號對比字符串。
學習編程最好的方法就是直接寫程序。Xcode 6新增了一個功能叫做Playgrounds。這是一個交互式開發環境,開發者可以在該環境里實驗編程并且可以直接看到程序運行結果。假設你安裝了Xcode 6(或者以上),運行Xcode,你會看到如下開始界面。
Playground是一種特別類型的Xcode文件。你只需要點擊“Start with a Playground”,然后在彈出的界面填寫項目名和選擇平臺類型。你可以使用默認的名字或者自己命名,但記得需要選擇iOS平臺。
一旦你確認并保存信息文件完畢,Xcode將會打開如下Playground交互界面。你會在屏幕中看到在屏幕的左邊面板,是你編輯代碼的界面。
當你在左邊輸入代碼時,Playground將立即解釋你的代碼并在右側面板顯示結果。默認情況下,Playground包含兩行代碼。你可以在右側面板立刻看到“Str”聲明的結果。
我們一起來寫一些代碼。這個練習的目的是讓你初步接觸一下Swift編程并且對Xcode有個初步的印象。在講述過程中我將會解釋一部分代碼。但是即使你看不懂任何一行代碼也沒有關系,特別是你還是一個新手的話。我想你會對一些術語比如:類,方法等感到困惑 。現在,不要多想,全身放松地去使用Xcode。我們將再后面的章節介紹這些概念 。
讓我們馬上開始。
首先,讓我們看一下兩行代碼的關鍵字。這里我們又定義了兩個變量
當你輸入上面的代碼時,你馬上可以在右側的面板上看到結果
讓我們繼續增加下面的代碼
message1 .uppercaseString
Xcode的編輯器會彈出一個自動完成功能。自動完成功能是一項非常友好的能夠幫助你快速完成代碼的功能。一旦你輸入“mess”,你將會看到一個自動完成窗口,里面會給出一些基于你的輸入的一些建議。這時你需要做的就是選擇“message1”并且敲擊回車。
Swift使用點(.)語法來實現方法調用或者訪問變量的屬性。當你在message1后面輸入點時,自動完成窗口會再一次彈出。里面會列出一系列屬于該變量的方法或者屬性。你可以繼續輸入“uppercaseString”或者從自動完成窗口選擇。
一旦你完成輸入,你可以立刻在輸出窗口看到結果。當你使用UppercaseString屬性,message1的內容將會自動
轉換成大寫。
繼續輸入以下代碼
Swift允許你使用+號連接兩個字符串(String)。上面這行代碼將message2的內容轉換成小寫,
并且和另一個string連接在一起。更有趣的是,你可以在你的代碼中包含emoji字符圖形。你可能會問如何在MaxOS中輸入emoji字符。很簡單,按下control+command+spacebar(控制+命令+空格鍵),就會出現emoji圖形選擇窗口。
讓我們繼續輸入下面的代碼片段:
條件邏輯在編程中非常常見。有時候,當某個添加滿足時你想執行某一段確定的代碼。if-else語句是Swift提供的控制流方法之一。在這段代碼中,我們使用==操作符對比了message1和message2。如果它們相等,程序會打印出“Same message”。否則,將會打印出“Not the same message”。你將會在你的屏幕中看到如下結果。
讓我們做一點更有趣的事情,例如創建一個標簽(label),這在用戶界面中非常常見:
這里我們使用內建的UILabel 類創建了一個label并且設置它的大小為300*50。我們把它的text屬性設置為
message1.為了在Playground中預覽UI元素,你可以點擊快速查看(Quick Look)或者歷史值(Value History)圖標。快速查看功能通過一個彈出窗口顯示label。如果你使用歷史值(Value History),則Playground會打開一個獨立的預覽面板
剛才的label是一個毫無特色的label。改變它的顏色應該是個不錯的想法。不錯的是,你只需要一行代碼就可以定制顏色。你還可以很容易的中間對齊文本或者將label設置成圓角。輸入如下代碼你將會看到一個橘黃色的圓角label。
這就是iOS SDK的強大能力。它里面包含了成千上萬的預定義的元素,并且開發人員只需要很少的代碼就可以定制這些元素。
要說一下,不要被我誤導了。一般來說創建用戶界面你不需要輸入代碼。Xcode提供一個叫Storyboard(故事板)的功能,你可以通過拖拽來設計UI。我們將會再下一章講述。
所以你現在對Swift已經有初步概念了。你現在感覺Swift怎么樣呢?喜歡它嗎?我希望你能感覺到Swift非常容易學習和使用。最重要的是,我希望Swift不會讓你不再想開發app。下一章,你將會學到如何創建你的第一個app。
專題目錄: