Swift Packages 是可重複使用的程式碼元件。除了可以在 Swift package 中加入其他的 Swift package 依賴,我們也可以在 Xcode projects 中加入 Swift package 依賴。本文章將介紹如何在 Xcode projects 中加入 remote 和 local Swift package 依賴。
Table of Contents
添加 Remote Swift Package 依賴
在 Xcode projects 裡,添加一個 remote Swift package 是很簡單的。我們將介紹如何添加 Toast-Swift package。
點選 PROJECT 下的 GreetingApp 專案,再點選 Package Dependencies,然後點擊 + 按鈕。
Xcode 會彈出以下視窗。在視窗的右上角的收尋欄位中,填入 Toast-Swift 的 Git repository URL:https://github.com/scalessec/Toast-Swift。Xcode 會自動去這 URL 下載需要的資訊。
Dependency Rule 欄位有以下的選項:
- Up to Next Major Version:允許專案更新至下一個 major 版本。
- Up to Next Minor Version:允許專案更新至下一個 minor 版本。
- Range of Versions:自定允許更新的版本範圍。
- Exact Version:指定特定的版本。
- Branch:使用 branch-based 依賴。
- Commit:指定特定的 commit hash。
選擇 Toast-Swift package 產生的 product。一個 Swift package 可能會產生數個 products。我們只需要選擇需要的 products 就可以了。
添加完成後,你可以看到 Toast-Swift package 被加入到 Package Dependencies 列表中。
點選 TARGETS 下的 GreetingApp target,我們可以看到 Toast-Swift 也被加入到 Frameworks, Libraries, and Embedded Content 列表中。
這樣就添加完成了。以下程式碼顯示如何在專案中使用 Toast-Swift package。
import UIKit import Toast class ViewController: UIViewController { @IBOutlet weak var greetingTextField: UITextField! @IBOutlet weak var greetingLabel: UILabel! @IBAction func onClick(_ sender: Any) { view.makeToast("Hello Wayne's Talk!") } override func viewDidLoad() { super.viewDidLoad() } }
添加 Local Swift Package 依賴
我們可以利用 Swift packages 來模組化程式碼。我們先建立一個 Swift package,並將部分程式碼移到它裡面。然後,在原本的專案中,添加剛剛建立的 Swift package 依賴。這就是添加 local Swift packages 依賴。如果不了解如何建立一個 Swift package,可以參閱以下文章。
點選 PROJECT 下的 GreetingApp 專案,點選 Package Dependencies,然後點擊 + 按鈕。Xcode 會彈出以下視窗。在視窗的下方,點擊 Add Local … 按鈕。
Xcode 會彈出以下視窗,讓我們選擇 local Swift package 的資料夾。我們選擇 Greeting package,你可以在程式碼範例中找到 Greeting 的原始碼。
選擇好後,你可以看到 Greeting package 被加入到左邊 Navigator 視窗裡的 Packages 列表下。只到這裡的話,你還無法在專案中引用 Greeting package。你還必須要將 Greeting package 加入到 Frameworks, Libraries, and Embedded Content 列表中。
點擊 Frameworks, Libraries, and Embedded Content 下方的 + 按鈕。
Xcode 會彈出以下視窗。我們選擇 Greeting package library。
選擇好後,Greeting package library 就會被加入到 Frameworks, Libraries, and Embedded Content 列表中。
這時候你可以在專案中引用 Greeting package。以下程式碼顯示如何使用 Greeting package。
import UIKit import Toast import Greeting class ViewController: UIViewController { @IBOutlet weak var greetingTextField: UITextField! @IBOutlet weak var greetingLabel: UILabel! @IBAction func onClick(_ sender: Any) { let text = greetingTextField.text ?? "" greeting.setTextFromJSON("{\"text\":\"\(text)\"}") greetingLabel.text = greeting.text view.makeToast(greeting.text) } private var greeting = Greeting() override func viewDidLoad() { super.viewDidLoad() greetingLabel.text = greeting.text } }
結語
Swift Packages 是可重複使用的程式碼元件。除了我們可以在 Xcode projects 添加 open-source Swift packages,還可以模組化我們的程式碼。趕快試著在你的專案中使用 local Swift packages 來模組化專案中的程式碼吧!