如何在 Xcode Projects 中添加 Swift Package 依賴

Photo by Brooke Lark on Unsplash
Photo by Brooke Lark on Unsplash
Swift Packages 是可重複使用的程式碼元件。除了可以在 Swift package 中加入其他的 Swift packages 依賴,我們也可以在 Xcode projects 中加入 Swift packages 依賴。本文章將介紹如何在 Xcode projects 中加入 remote 和 local Swift packages 依賴。

Swift Packages 是可重複使用的程式碼元件。除了可以在 Swift package 中加入其他的 Swift package 依賴,我們也可以在 Xcode projects 中加入 Swift package 依賴。本文章將介紹如何在 Xcode projects 中加入 remote 和 local Swift package 依賴。

完整程式碼可以在 下載。

添加 Remote Swift Package 依賴

在 Xcode projects 裡,添加一個 remote Swift package 是很簡單的。我們將介紹如何添加 Toast-Swift package。

點選 PROJECT 下的 GreetingApp 專案,再點選 Package Dependencies,然後點擊 + 按鈕。

Add a Swift package from Package Dependencies.
Add a Swift package from 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。
Search for Toast Swift package.
Search for Toast Swift package.

選擇 Toast-Swift package 產生的 product。一個 Swift package 可能會產生數個 products。我們只需要選擇需要的 products 就可以了。

Choose package products for Toast-Swift.

添加完成後,你可以看到 Toast-Swift package 被加入到 Package Dependencies 列表中。

Toast Swift package is added.
Toast Swift package is added.

點選 TARGETS 下的 GreetingApp target,我們可以看到 Toast-Swift 也被加入到 Frameworks, Libraries, and Embedded Content 列表中。

Toast Swift package is added in Frameworks, Libraries, and Embedded Contents.
Toast Swift package is added in Frameworks, Libraries, and Embedded Contents.

這樣就添加完成了。以下程式碼顯示如何在專案中使用 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 … 按鈕。

Add local package.
Add local package.

Xcode 會彈出以下視窗,讓我們選擇 local Swift package 的資料夾。我們選擇 Greeting package,你可以在程式碼範例中找到 Greeting 的原始碼。

Choose the directory of the local package.
Choose the directory of the local package.

選擇好後,你可以看到 Greeting package 被加入到左邊 Navigator 視窗裡的 Packages 列表下。只到這裡的話,你還無法在專案中引用 Greeting package。你還必須要將 Greeting package 加入到 Frameworks, Libraries, and Embedded Content 列表中。

點擊 Frameworks, Libraries, and Embedded Content 下方的 + 按鈕。

Add the local package in Frameworks, Libraries, and Embedded Content.
Add the local package in Frameworks, Libraries, and Embedded Content.

Xcode 會彈出以下視窗。我們選擇 Greeting package library。

Choose local package library.
Choose local package library.

選擇好後,Greeting package library 就會被加入到 Frameworks, Libraries, and Embedded Content 列表中。

Local package library is embedded.
Local package library is embedded.

這時候你可以在專案中引用 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 來模組化專案中的程式碼吧!

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

You May Also Like
Photo by Chris Murray on Unsplash
Read More

Swift Combine 教學

Swift Combine 是 Apple 用來實現 reactive programming 的函式庫。在 Combine 還沒出來之前,我們一般是使用 RxSwift。不過,使用 Combine 的話,我們就不需要再引入額外的函式庫。而且與 RxSwift 相比,Combine 的效能更好。
Read More
Photo by Ben White on Unsplash
Read More

Swift Concurrency 教學

Swift 5.5 推出了 Swift concurrency。它讓我們用 synchronous 的方式來完成 asynchronous code。大大地降低 asynchronous code 的複雜度。本文章將介紹 Swift concurrency 的基本知識。
Read More