SwiftUI 訂閱追蹤器

Vibe Coding 005

製作一個訂閱追蹤器,使用 SwiftUI 開發 iOS App

新增資料規格

頁面規格

SwiftUI 專案

頁面結構

新增或者修改訂閱的頁面

欄位

  • 訂閱平台(String,必填)
  • 金額(Decimal,必填,> 0)
  • 支付週期(Enum: 月付/年付,必填)
  • 開始日期(Date,必填)
  • 下次付款日(Date,系統自動推算,可修改,非必填,需根據目前日期推算下次付款日)

功能要求

  • 表單驗證:訂閱平台、金額、支付週期、開始日期為必填
  • 金額需為有效數值(> 0)
  • 下次付款日自動根據週期與開始日推算,可手動修改
  • 儲存時顯示 loading、錯誤訊息提示
    • 若驗證失敗,顯示對應錯誤提示文字於欄位下方
  • 儲存成功後自動跳轉到訂閱列表
  • 資料儲存在本地資料庫,使用 SwiftData 資料庫
  • 新增與修改資料共用此頁

實現檔案(使用 MVVM 架構)

需要新增以下檔案:

  1. AddView.swift
    • SwiftUI 表單 UI
  2. AddViewModel.swift
    • 處理表單驗證邏輯
    • 提供表單提交方法
    • 處理錯誤訊息
    • 管理 UI 狀態
  3. AddModel.swift
    • 定義資料模型結構

這三個檔案都產生在 TestDemo/Add/ 下即可,不需要再切子目錄。

TestDemo/
└── Add/
    ├── AddView.swift
    ├── AddViewModel.swift
    └── AddModel.swift

列表資料規格

頁面規格

頁面結構

訂閱列表

欄位

  • 訂閱平台
  • 金額
  • 支付週期
  • 開始日期
  • 下次付款日

功能要求

  • 右上角有一個新增按鈕,可以跳轉到 AddView.swift 頁面
  • 讀取本地資料庫來顯示列表,使用 SwiftData
  • 無資料時,要顯示沒有任何訂閱資料
  • 列表頁面可以點選,點選會會進入到 AddView.swift 可以修改資料

實現檔案(使用 MVVM 架構)

需要新增以下檔案:

  1. ContentView.swift
    • SwiftUI 列表 UI
  2. ContentViewModel.swift
    • 管理 UI 狀態
  3. ContentModel.swift
    • 定義資料模型結構

這三個檔案都產生在 TestDemo/List/ 下即可,不需要再切子目錄。

TestDemo/
└── List/
    ├── ContentView.swift
    ├── ContentViewModel.swift
    └── ContentModel.swift

備註

需要在主程式 TestDemoApp.swift 引用相關 SwiftData 的 Model

結果