[Day 8] 讀取與解析 CSV 資料

前言 在 App 開發中,有時需要從專案內置的資源檔(如 CSV、JSON)讀取資料。CSV 是用逗點分隔值的檔案,我們可以將之轉化為 SwiftUI 列表。這項操作技能很實用,因為許多資料都是以這種簡單的格式儲存的,而我們這次要實作的 App 也會需要使用到這個功能,因此有必要先了解一下這個主題。 要完成這個任務,我們需要理解並掌握以下幾個核心概念: 讀取 App 內部檔案:學習如何使用 Bundle 來定位並讀取包含在我們 App 安裝包內的資源檔案,例如這次要用的 products.csv。 資料解析 (Parsing):取得原始的文字資料後,我們需要將其一行一行地解析,並將每個欄位轉換成我們定義好的 Product 資料結構,這個過程稱為資料解析。 動態列表 List:這個我們在昨天有使用過了,今天也會用到它。 Identifiable 協定:我們的資料模型(Product struct)必須遵循 Identifiable 協定,告訴 SwiftUI 如何唯一識別每一個項目。 那我們就開始吧。 Step 1:將 products.csv 加入 Xcode 專案 我們先將 products.csv 檔案拖曳到 Xcode 左側的專案導覽器中,並確保在跳出的視窗中勾選了 “Copy files to destination” 以及您的 App Target。 按下 Finish 後,可以看到檔案成功被加入到專案裡頭。 Step 2:定義產品資料模型 我們需要建立一個 struct 來對應 CSV 中的每一行資料。為了讓 SwiftUI 的 List 能識別每個項目,這個 struct 必須遵循 Identifiable 協定。 ...

September 21, 2025 · 4 分鐘

[Day 7] SwiftUI 列表與導航

台 7 線 15k SwiftUI 列表與導航 在 iOS 中,列表(List)和導航(Navigation)是兩個非常重要的基礎元件。前者用於展示大量資料,後者則為畫面切換機制。今天我們將探討這兩個重要的主題,並透過實作一個簡單的列表應用來理解相關概念。 List 元件與 ForEach 的基本使用 SwiftUI 的 List 元件使用方式如下: struct ContentView: View { ![alt text](image.png) var body: some View { List { ForEach(items, id: \.self) { item in Text(item) } } } } 在上面的例子中,我們使用了 ForEach 來遍歷陣列中的元素。 id 是什麼? id 參數用於為 ForEach 中的每個項目提供唯一的標識符。SwiftUI 透過這個標識符來識別和追蹤 list 中的每個視圖。當使用 id: \.self 時,表示直接使用被遍歷集合中的元素本身作為其唯一標識符。這種方式適用於集合中的元素本身是簡單且唯一的類型,例如 Int、String。 使用 \.self 作為 id 的前提是,你的資料集合 items 中的元素類型必須遵守 Hashable 協議。Hashable 能確保每個元素都可以被計算出一個唯一的雜湊值,從而讓 SwiftUI 能區分它們。 ...

September 20, 2025 · 2 分鐘