[Day 15] 里程定位與地圖顯示(一)- 資料讀取

前言 第一個進行的 issue 是「里程定位與地圖顯示」,先用 VS code 來看一下這兩份 CSV(省道與國道)長什麼樣子: 我們現在的目標是,讀取 CSV 檔案,然後將其轉成我們定義好的物件類型。 Git 分支規劃 從 main 分出 develop 再從 develop 分出 feature/parse-csv 分支 於 feature/parse-csv 分支進行開發 資料結構 依據 CSV 欄位,定義我們需要的結構: struct ProvincialMileageMarker { let roadNumber: String // 公路編號 let county: String // 隸屬縣市 let wgs84Lon: Double // 坐標-E-WGS84 let wgs84Lat: Double // 坐標-N-WGS84 let township: String // 隸屬鄉鎮 let location: String // 設置位置 let content: String // 牌面內容 let condition: String // 現況 let direction: String // 牌面方向 } struct HighwayMileageMarker { let roadNumber: String // 國道編號 let county: String // 隸屬縣市 let wgs84Lon: Double // 坐標X-WGS84 let wgs84Lat: Double // 坐標Y-WGS84 let display: String // 牌面內容 let direction: String // 方向與備註 } 資料讀取與顯示 搭配 Combine,建立 RoadDataManager,實作資料背景讀取與在 Day 9 介紹過的 Combine 來自動更新畫面: ...

September 28, 2025 · 3 分鐘

[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 分鐘