大家好,鐵人賽堂堂邁入第二十一日,歡迎來到我們最令人興奮的篇章——原生 App 開發!
在過去二十天,我們已經用 Python 成功地將 AI Agent 變成了一個專業的 Web API 服務。從今天開始,我們將為這個強大的後端,打造一個精美、流暢的 iOS App 前端介面。
今天,我們不急著畫按鈕或拉畫面,而是先來做最重要的基礎建設。我們將學習如何:
Codable
協議,為 API 建立強型別的資料模型。
一個穩固的架構,是我們 App 成功的基石。
首先,請打開 Xcode 並建立一個新的 iOS App 專案。為了讓專案在未來功能擴充時依然保持整潔,我們將採用經典的 MVC (Model-View-Controller) 設計模式來組織我們的檔案。
請在專案中建立如下圖所示的資料夾結構:
struct
和 NetworkManager
都會放在這裡。MainTableViewCell.xib
。MainViewController
,負責協調 Model 和 View 之間的互動。這種職責分離的架構,能讓我們的程式碼更易於理解、測試和維護。
Codable
解析 API要與我們的 Python adk-api
服務溝通,第一步就是要讓 Swift App「看得懂」API 回傳的 JSON 格式。在 Swift 中,我們使用 Codable
這個強大的協議,來自動化地完成這項任務。
我們在 Model/API
資料夾下建立一個 Adk.swift
檔案,用來定義所有與 API 相關的資料結構。
// Adk.swift
import Foundation
// MARK: - Update Session API Response
// 這個 struct 對應 /sessions 端點的回應
struct UpdateSessionResponse: Codable {
let id: String
let appName: String
let userId: String
let lastUpdateTime: Double
// CodingKeys 是 Codable 的精髓所在
// 它能將 API 的 snake_case (例如 app_name)
// 自動轉換為 Swift 慣用的 camelCase (例如 appName)
enum CodingKeys: String, CodingKey {
case id
case appName = "app_name"
case userId = "user_id"
case lastUpdateTime = "last_update_time"
}
}
Codable
協議: 只需要在 struct
後面遵循 : Codable
,Swift 編譯器就會在背後為我們自動生成 JSON 與 struct 之間的轉換邏輯,省去了手動解析的大量功夫。CodingKeys
枚舉: 這是處理不同命名風格的「最佳實踐」。透過它,我們的 Swift 程式碼可以保持優雅的 camelCase
風格,同時又能完美對應後端 API 的 snake_case
格式。今天我們為 App 打下了最關鍵的地基。雖然畫面上還是一片空白,但我們的專案已經具備了:
我們的 App 已經學會了與後端溝通的「語言」。明天,我們將在此基礎上,利用 async/await
打造一個可重複使用的 NetworkManager
,建立起 App 的「通訊管道」,並準備發送第一筆真實的 API 請求!