跳至內容

Swift 學習

來自華夏公益教科書


本華夏公益教科書

[編輯 | 編輯原始碼]

這是一本面向初學者的 Swift 程式語言指南和參考書。它的目標是提供 Swift 及其技術的概述,以及學習起點的介紹。它旨在展示建立基本應用程式所需的基本概念概述,同時還為每個概念提供參考,以便在需要時找到更詳細的資訊。本書分為幾個章節:

  • 基本概念:簡單介紹該語言並定義 Swift 架構的主要概念。
  • 程式設計環境:介紹實踐方面,描述環境(Xcode)併為初學者提供程式設計起點的建議。
  • 棘手部分:作者關於自動佈局、上傳到 AppStore 等方面的發現。

基本概念

[編輯 | 編輯原始碼]

什麼是 Swift?

[編輯 | 編輯原始碼]

以下是該語言的簡單描述:

  • 它是 Apple 建立的一種程式語言,旨在替代 Objective-C
  • 首次亮相於 Apple 2014 年全球開發者大會。
  • 設計用於與 Apple 產品的 Cocoa 和 Cocoa Touch 協同工作。

如需瞭解更多資訊,您可以訪問以下連結:什麼是 Swift?

Swift 和 Objective-C 的主要區別

[編輯 | 編輯原始碼]
  • 語法:Swift 更類似於 Ruby 或 Python 等高階語言。如果您不熟悉這些語言,請先閱讀以下內容:快速參考指南
  • 泛型:可以處理任何引數的函式。它是 Swift 最強大的元素之一,值得閱讀
  • 記憶體分配:Swift 不需要像 Objective-C 那樣使用單獨的記憶體分配方法。
  • 可選型別:是強制解包變數的不錯替代方案。建議您至少閱讀可選型別文件的第一部分:可選型別
  • Swift 與大多數 Objective-C 庫相容。

Swift 導航架構(視窗和檢視)

[編輯 | 編輯原始碼]

檢視用於在螢幕上顯示應用程式,但這些檢視在 Apple 定義的層級結構中進行控制。要理解這一點,您首先需要了解該架構的元件。以下概念是您開始開發所需的基本知識,但在每個描述的末尾都有指向每個術語完整文件的連結,以備您需要更多資訊。
故事板

在 Xcode 故事板中排列檢視及其連線。
  • 故事板是您可以在其中圖形化地建立和修改程式在螢幕之間的流程,並建立新元素的地方。故事板

檢視控制器

  • 這些是管理應用程式顯示的螢幕的資料和視覺外觀的類。當 UI 顯示時,內容由一個或多個 VC 管理,這就是為什麼 VC 被稱為 iOS 應用程式的“骨架框架”。
  • 程式設計師可以建立和自定義 VC 類來管理應用程式的行為。
  • 應用程式的第一個檢視控制器稱為根檢視控制器。
  • 檢視控制器)

導航控制器

  • 控制應用程式的導航及其流程的 VC 堆疊。
  • 包含和管理一組檢視控制器,每個 VC 包含和管理一組檢視;NC 的目的是協調 VC 之間的導航。
  • 導航控制器

總之,該層級結構概念可以解釋如下:一個導航控制器控制多個檢視控制器,一個檢視控制器可以控制多個檢視。導航中涉及的其他概念是:

標籤欄控制器(TBC)

  • 透過直接管理檢視控制器來幫助控制應用程式的導航。
  • 與導航控制器一樣,它具有 VC 堆疊,並獨立呈現它們,可以直接由 TBC 控制。
  • 標籤欄

Segue(發音為“seg-way”)

  • 從一個螢幕過渡到另一個螢幕的連線和處理方式稱為 Segue。

Xcode 6 中使用了幾種不同型別的 Segue:
→ 推 Segue:將新的檢視控制器新增到導航堆疊中,新的 VC 將成為導航控制器的一部分。
→ 模態 Segue:第一個 VC 呈現第二個 VC,不將其包含在導航控制器堆疊中。要解散它,需要父 VC 來處理。
Apple 對Segue有簡短易懂的描述。在開始應用程式之前,請檢視它,以便為您的程式選擇合適的 Segue 型別。

程式設計

[編輯 | 編輯原始碼]

Swift 是一種新語言,因此需要最新的更新才能正常執行。在開始之前,請確保您擁有以下內容:

  • 一臺執行 Mavericks 或 Yosemite 的 Mac
  • Xcode 6

Xcode 是 Mac、iPhone、iPad 和 Apple Watch 的開發者工具集。使用此工具,您將能夠建立和管理 Swift 專案,以及在模擬器中執行您的應用程式。

Xcode IDE 的不同部分。

您必須瞭解 Xcode 專案的各個部分如何協同工作,但這需要透過經驗和與 Xcode 的互動來獲得。以下是一個圖形化和文字化的說明

  • 導航器區域:顯示專案檔案和設定。
  • 編輯器區域:顯示檔案的中心區域。
  • 工具區域:可以修改物件工具和標識的區域。
  • 工具欄:包含執行按鈕和活動檢視器的區域。

XCode 專案結構

  • XCode 不會對應用程式程式碼樹強制執行定義的結構。但是,當您建立一個新專案時,會建立三個預設資料夾:主應用程式資料夾、測試資料夾和產品資料夾。
  • 您還可以建立組來組織工作,或使用資料夾來保持程式環境的整潔。

開始程式設計

[編輯 | 編輯原始碼]

Apple 在其網站上提供了包含教程的全面文件。對於入門,這裡有一個教程,其中解釋了基本概念,以及影像、示例和概念定義。可以在 此處 找到該教程。這是一個良好的入門方法,但如果您繼續他們的教程系列,則會花費很長時間,並且可能很無聊且沒有必要。
學習新程式語言最有效的方法之一是檢視任何教程中提供的示例,因為大多數示例都是待辦事項列表實現,這些實現展示瞭如何連線 Segue 並返回到原始檢視控制器以顯示資訊。
Jack Watson 的教程系列 為簡單的應用程式逐步解釋了 Swift 的功能。希望這會更快地閱讀!

將元素新增到您的專案中

[編輯 | 編輯原始碼]

新增庫:對於內建庫,Xcode 有一個 5 步的 過程

新增檔案:使用 Xcode,您可以直接將 Finder 視窗中的檔案拖放到 Xcode 導航區域中的專案資料夾中。

配置開發

[編輯 | 編輯原始碼]

對於在 Xcode 中程式設計並在模擬器中執行您的應用程式,不需要證書,但您必須建立帳戶。但是,當您想要在自己的裝置上測試應用程式時,需要開發者證書,並且您還需要在裝置上安裝相關的配置檔案以使應用程式能夠執行。正如 網站 中所述,iOS Developer Program 允許您將應用程式安裝到最多 100 臺 iPad、iPhone 或 iPod touch 裝置上。

配置部署

[編輯 | 編輯原始碼]

為部署配置應用程式是開發過程中最棘手的部分之一,因此您應該遵循並閱讀本 指南 中的每個步驟。此過程需要付費許可證才能進行部署。開發者許可證不能用於將應用程式上傳到商店;您必須至少擁有一個註冊的裝置開發許可證才能被允許上傳應用程式。

棘手部分

[編輯 | 編輯原始碼]

自動佈局

[編輯 | 編輯原始碼]

隨著 Apple 釋出更多具有不同螢幕尺寸的移動產品,對使用一個設定即可適用於所有螢幕的實現的需求越來越大。

對於自動佈局,會定義和配置約束以動態定位視覺元素。

自動佈局是開發人員一直避免使用的工具,但實際上並不那麼難。

首先快速介紹一下尺寸類:故事板中的螢幕、檢視和檢視控制器都有尺寸類。這對應於目標裝置的方向和螢幕,水平和垂直方向有三個值。

  • 常規高度和常規寬度
  • 緊湊高度和緊湊寬度
  • 任何高度和任何寬度

開發任何高度和任何寬度將允許您支援所有螢幕尺寸。但需要相對約束來設定檢視中元素的位置。現在,如果您決定不想為不同的裝置開發,請轉到下一節。否則,啟用自動佈局並開始使用其功能!Ray Wenderlich 提供了正確的指南。
. 在這裡,您可能需要向下滾動頁面,直到到達“自動佈局來拯救!”,從那裡開始真正的解釋。

檢視控制器之間的通訊(設計模式)

[編輯 | 編輯原始碼]

Swift 最令人困惑的問題之一是透過檢視控制器傳遞資訊,因此這裡有三種簡單的方法可以做到這一點。

對於使用者互動和資料輸出,檢視上的視覺元素與控制器中的程式碼相連線。
  • 單例:在程式執行期間會建立一個該類的單個例項,可以使用任何其他類中的類的例項化來訪問它。可以在這裡儲存諸如網路通訊和登入之類的資訊。
  • 觀察者(委託):這是 Swift 中最常用的模式之一,一個檢視控制器被設定為觀察者,當觀察類需要處理返回的資料時,它可能是通知或變數,觀察類會呼叫觀察者方法。這通常用於當包含資訊的檢視控制器是需要該資訊的觀察者檢視控制器的子級時。
  • 在呼叫 VC 時傳送資料或物件:這是最簡單的方法,當呼叫 Segue 時,會呼叫 prepareForSegue 方法,並且可以訪問下一個檢視控制器。這用於當一個檢視控制器中的一個或幾個變數需要在下一個檢視控制器中使用時。程式碼如下
 override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {        
     if segue.identifier == "segueName" {
           let nextViewController = segue.destinationViewController as ViewController
           nextViewController.atribute = dataToSend
     }
 }
 segueName is the name you gave the segue when you created it. 
 atribute is a variable present in the next segue where the data you want to sell is going to be stored. 
 dataToLend is the data/variable you are trying to send

Segue 的管理

[編輯 | 編輯原始碼]

Segue 負責程式流程,因此您應該注意處理它們的正確方法。

建立呼叫 Segue

[編輯 | 編輯原始碼]

Segue 可以透過程式設計方式呼叫,也可以使用 XCode 的助手呼叫,Segue 是使用 Xcode 助手建立的,您只需選擇源檢視,按住 Ctrl 鍵,然後將顯示在第二個檢視中的線條拖放到該位置,然後會彈出一個選單,您可以在其中選擇要使用的 Segue 型別。透過單擊 Segue,可以在實用程式區域中為其指定一個名稱。

  • 以程式設計方式,可以這樣呼叫 Segue:(如果您使用這種方法,則父檢視控制器負責關閉子檢視控制器,而不是導航控制器)
 performSegueWithIdentifier("segueIdentifier", sender: nil)
  • 從 Xcode 助手,可以將 Segue 分配給根據檢視元素中的操作開始,例如,如果選擇的是按鈕而不是整個檢視,請按住 Ctrl 鍵並將線條拖放到下一個檢視控制器,則在按下按鈕時會呼叫 Segue。

關閉 Segue

[編輯 | 編輯原始碼]

如果您想管理應用程式的記憶體使用情況,這是一個重要的步驟,因為它會將檢視從堆疊中彈出,釋放檢視控制器持有的記憶體。關閉操作可以由 NC 或以程式設計方式處理。

  • 透過導航控制器:通常,普通的“顯示”Segue 可以透過按下出現在螢幕頂部導航欄中的後退按鈕自動關閉,NC 會關閉檢視控制器。
  • 透過程式碼:需要將 ViewController 從堆疊中彈出以顯示。彈出所有 View Controllers 的呼叫示例如下
     self.navigationController!.popToRootViewControllerAnimated(true) // pops all View Controllers until the root view controller is reached
     self.navigationController!.popViewControllerAnimated(true) // pops the las view controller

下一步

[編輯 | 編輯原始碼]

所以,現在您已經瞭解了基礎知識,您可以開始使用相機或二維碼閱讀器等流行功能實現應用程式。在下表中,您可以找到關於此主題以及更多內容的優秀教程。

其他值得一看的網站

[編輯 | 編輯原始碼]
主題 描述 連結
圖形使用者介面 這裡涵蓋了從檢視元素到自動佈局的概念 連結
長期教程 這是一個眾所周知的免費教程,面向學生,最近為 Swift 編寫 連結
相機教程 描述瞭如何在 Swift 中控制相機

連結

華夏公益教科書