天天看點

《Swift入門經典(第2版)》——1.2 起步

本節書摘來自異步社群《swift入門經典(第2版)》一書中的第1章,第1.2節,作者:【美】bj miller(bj 米勒)著,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視

此時,最重要的假設是你已經具有一台mac計算機,如果沒有它,将不能安裝xcode,它是apple的mac和ios內建開發環境(integrated development environment,ide)。

注意:下載下傳xcode

xcode 7是從mac app store免費下載下傳的,必須具有mac os x 10.10.4或更高版本。盡管可以在xcode 6.x中編寫swift代碼,但是本書還将包括swift版本2.0,它需要xcode 7。

在mac上啟動app store應用,搜尋xcode,然後單擊安裝軟體。一旦安裝完成,xcode就會列在/applications目錄中。

1.2.1 四處看看

在打開xcode時,可能會詢問你是否想安裝額外的工具;繼續前進并安裝它們。應該隻有在第一次啟動xcode時才會發生這種情況。一旦打開了xcode,就會看到一個标準的菜單視窗,其中有一些選項,用于建立playground、建立新項目或者打開現有的項目,右邊是最近的項目和打開的playground(如果打開了任何playground)的清單。視窗現在應該如圖1.1所示。

盡管在本書中主要在playground中工作,但是熟悉一下ide是有好處的,是以就讓我們快速完成這個任務。單擊create a new xcode project,建立一個新的xcode項目。下一個界面詢問你想要建立的項目類型,對于這個試驗,僅須使用single view application,如圖1.2所示,然後單擊next按鈕。

《Swift入門經典(第2版)》——1.2 起步
《Swift入門經典(第2版)》——1.2 起步

接下來,将要求命名項目。選擇organization name、identifier、language(swift或objective-c)以及要運作項目的裝置。這裡還可以訓示是否想要使用core data,或者包括unit tests和ui tests,如圖1.3所示。所有這些資訊對于你将來建立的項目都是有用的,但是出于測試目的,我們還不需要關心它們,可以使這些複選框保持原樣。organization identifier通常是個人或公司url的反向dns名稱,用于在組織級確定唯一性。bundle identifier把project name附加到organization identifier末尾,用于確定每個應用包的唯一性。一旦把應用送出給mac app store或ios app store,包辨別符就需要是唯一的。

《Swift入門經典(第2版)》——1.2 起步

在這裡,還可以選擇裝置類型,比如iphone或ipad,以便于xcode可以正确地建立裝置所需的故事闆(storyboard)檔案,這些裝置将使用你計劃編寫的應用。這樣,就可以把不同裝置上的不同接口作為目标,但是仍然使用相同的代碼管理它們,比如利用universal應用。

把項目命名為testapp,因為我們隻想熟悉xcode(可以在以後删除這個項目)。一般來說,如果選擇不含空格的項目名稱,後面就可能遇到更少的麻煩。對于language選擇swift,并單擊next按鈕。xcode将會打開,并且可以看到你建立的新項目。它應該如圖1.4所示。

《Swift入門經典(第2版)》——1.2 起步

圖1.4 初始的xcode ide布局。左邊是導航窗格(navigation pane),右邊是檢查器窗格(inspector pane),中間是主要内容區。頂部工具欄中是一些按鈕,用于運作或停止生成,檢視錯誤和警告資訊,以及顯示或隐藏視圖

xcode被漂亮地劃分成幾個合乎邏輯的區域,就像在其他ide中你可能所習慣的那樣。不過,它還有一些非常好的特性要注意。左邊的窗格稱為導航窗格。在這裡,可以選擇不同的導航器,檢視項目中的檔案、警告和錯誤、斷點、單元測試(unit test)等。右邊的窗格稱為檢查器窗格,這個動态窗格依賴于單擊的是什麼元素而改變,比如編輯所選按鈕的文本屬性,或者在視窗中調整控件的位置。

在處理實際的mac/ios項目時,将把大多數時間花在中間的主要内容區中。在内容區中,可以更改項目設定,最重要的是,通過編寫代碼或者在storyboard(故事闆)中設計界面來建立應用。

左上方的欄中提供了幾個有用的功能。從左邊起,具有用于視窗管理的标準mac red/yellow/green(紅/黃/綠)按鈕。接下來,當涉及編譯、生成以及在仿真器(simulator)或裝置上運作你的應用時,播放和停止按鈕将實際地生成以及運作和停止。右邊用于通知目前的資訊,比如項目中有多少個警告或錯誤,以及生成狀态。

最後,右上方的按鈕組可以調整你檢視的視圖,以顯示或隐藏導航窗格、檢查器窗格、調試窗格(debug pane)或輔助編輯器,以及檢視代碼比較、源代碼“查錯”視圖和日志。

 注意:檢視兩個檔案

assistant editor(輔助編輯器)把内容區分成兩半,以便可以同時檢視兩個檔案。這是有益的,例如,當你可能在編寫單元測試以及使單元測試通過的代碼時,或者當你在故事闆中建立使用者界面并且打開了相應的視圖控制器(view controller)以連接配接動作(action)和出口(outlet)時。有關利用自定義界面開發應用的更多知識,建議閱讀john ray的圖書sams teach yourself ios application development in 24 hours(sams publishing出版)。

1.2.2 xcode playground

xcode的優秀的主要特性之一是playground。playground是一個便箋本,如果你願意,在把代碼添加到應用之前,可以使用它測試代碼,以確定你從代碼段接收到正确的結果。playground的這種功能如此強大,如果你的代碼将給你提供期望的結果,那麼就可以獲得立即的回報,而不必編譯代碼并在仿真器或裝置上運作它。

可以随時建立新的playground,并且可以選擇使之成為項目的一部分,或者隻是作為一個獨立的playground檔案。由于我們已經位于一個打開的項目中,是以可以單擊file→new→ file,然後在檔案的source(源)集(用于ios或mac)中選擇playground,接着單擊next按鈕。在save as對話框中,命名playground檔案(出于我們的目的,名稱myplayground就很好),然後單擊create按鈕。目前不用關心group或target;我們還沒有生成應用,是以不用關心它們。

 注意:mac或ios playground

在從mac區域或ios區域建立playground時,檔案結構中存在一些差別。建立一個mac playground将會在檔案的頂部添加import cocoa語句,并且使mac架構和子產品可供使用。建立一個ios playground将在檔案的頂部添加import uikit語句,并且使ios架構和子產品可供使用。初看上去,兩種playground并沒有什麼差別。如果建立ios playground,但是不想測試mac應用代碼,或者剛好相反,則隻需建立一個期望類型的新playground即可。

注意,新的playground帶有幾行swift代碼,以便于你學習。在繼續學習後面的内容之前,讓我們先介紹其中一些基礎知識。playground應該如下所示。

上面代碼中的第一行是注釋,它會被編譯器忽略。可以使用注釋給代碼的某些部分加注解,使得人類能夠輕松地讀懂它們,也許是給其他同僚(或者甚至是你自己)解釋代碼的這個特定部分是用于什麼的。//(雙正斜框)意指将把行中餘下的内容視作注釋。還可以注釋整個代碼區域或文本段落,它們可以在同一行或者多個連續的行上,隻須利用/和/包覆它們即可。swift甚至允許在注釋塊内嵌套注釋塊,比如/ ... / ... / ... /。

上述代碼中的餘下部分執行一個簡單的任務,它把字元串"hello, playground"配置設定給變量str。即使代碼沒有直接把任何内容輸出到控制台,playground預設也會在playground的結果窗格中顯示“hello, playground”,以顯示變量以及你建立的任何後續變量或常量的内容。當你想測試邏輯、數學及其他操作時,這将很友善。

還值得指出的是:變量str前面帶有關鍵字var。var關鍵字可以讓swift知道str是一個變量,可以更改其内容。要建立常量或者可變的變量,可以使用關鍵字let代替var。

《Swift入門經典(第2版)》——1.2 起步

tryityourself

在playground中建立前幾行swift代碼

此時,當你身處playground中時,試驗前幾行代碼是有意義的,是以讓我們在這裡全部試驗一下它們。

(1)在playground中,把以下代碼輸入到一個新行上。

<code>let mynewvalue = 40 + 2</code>

(2)注意playground的右邊顯示“42”。輸入如下代碼行,以在句子裡面插入值。

<code>print("my new value is \(mynewvalue).")</code>

(3)要在控制台中檢視輸出結果,可以單擊view菜單,然後單擊debug area,再單擊show debug area。debug area在界面底部現在是可見的,并且你應該會看到print()語句的輸出。

<code>"my new value is 42."</code>

祝賀!你已經編寫了前幾行swift代碼。

《Swift入門經典(第2版)》——1.2 起步

在上面的“try it yourself”示例中,在第(1)步中把值42賦予mynewvalue。然後,在第(2)步中,使用稱為字元串插值(string interpolation)的方法,把該值插入一個句子裡,這是一種在輸出内插入變量或常量的便捷方式。下一章将更詳細地讨論字元串插值。print()語句把輸出結果顯示到控制台,這對于快速調試或者檢視資料的内容很友善。

 注意:删除xcode項目

如果你想要删除這個xcode項目(或者你可能不再想要的任何xcode項目),可以簡單地在檔案系統上删除包含檔案夾。假如你把這個項目儲存在~/documents/testapp中,那麼隻須從documents目錄中删除testapp檔案夾即可。

1.2.3 swift repl

swift還具備一個稱為repl(read-eval-print-loop,讀取-求值-輸出-循環)的優秀特性。repl是我們剛才體驗的playground的一個基于指令行的互動式版本。repl非常适合于快速測試,以確定代碼按預期的那樣工作,類似于利用playground所得到的結果,但它不會在項目中建立一個新檔案,隻能把這個臨時性的repl用于進入、測試代碼和離開。至于是使用playground還是使用repl,主要依賴于你更偏愛哪個工具。如果你已經在使用terminal.app,或者一些其他的指令行實用程式,隻打開repl對你來說可能更容易。另一方面,如果你已經身處xcode中,那麼隻建立一個playground并從那裡開始可能更快速。

要通路repl,隻須輸入以下代碼。

<code>$&gt; xcrun swift</code>

xcrun是由xcode提供的一個指令行工具,用于運作或定位開發工具或屬性。是以,上面的代碼行用于告訴xcrun運作swift repl。當按return鍵時,将會看到如下所示的内容(你的版本号可能有所不同)。

1&gt;是swift repl提示符,可在此處開始輸入swift代碼,每行一條指令,并且它會為你解釋你的代碼,與playground所做的非常像。讓我們試試另一個編寫代碼的示例,這一次是在swift repl中進行。

《Swift入門經典(第2版)》——1.2 起步

使用swift repl把兩個字元串結合在一起

讓我們在這裡編寫另一個包含一些swift代碼的示例;希望這個示例仍然不太難。如果你沒有完全了解它,也不要擔心;下一章将非常詳細地介紹它。

(1)在mac上打開terminal.app。

(2)在terminal中輸入xcrun swift,然後按return鍵。

(3)在1&gt;提示符下,輸入以下代碼。

(4)注意每次按return鍵時,swift的repl如何顯示我們使用的常量或變量的名稱、它的資料類型string(第2章将介紹資料類型)以及它的值。

(5)看看如何使用“+”運算符把兩個字元串連接配接在一起。swift足夠智能,知道即使我們處理的是字母字元(不同于數字相加),“+”運算符也會把string執行個體相加起來。第3章将介紹關于運算符的更多知識。

《Swift入門經典(第2版)》——1.2 起步

你幹得很棒!swift repl将在repl會話期間把常量和變量一直儲存在記憶體中。這意味着以後可以多次引用變量和常量,在實際的應用中編寫代碼之前,這将可以幫助你緻力于快速、輕松地處理問題。完整的“try it yourself”示例應該如圖1.5所示。

《Swift入門經典(第2版)》——1.2 起步

要退出swift repl,可以輸入冒号(:)調用指令模式,然後輸入q用于退出,并按return鍵。這将傳回正常的unix shell提示符。

繼續閱讀