iT邦幫忙

2025 iThome 鐵人賽

DAY 9
1
生成式 AI

Swift一下就會了系列 第 9

Day 9 MVC架構

  • 分享至 

  • xImage
  •  

我們做一個專案如果把所有的檔案都放在一起,想要編讀就會變得非常麻煩。這時候我們就需要MVC用來幫助開發者將程式碼分成不同的職責區塊,讓程式更容易維護、擴充與測試。


Model(資料層)

  • 負責儲存與處理資料
  • 不包含 UI 相關的程式碼
  • 負責商業邏輯(Business Logic)
  • 可以是結構體、類別、資料模型等
class AlarmData: Object {
    
    @Persisted var alarmTime: String = "" // 鬧鐘要響的時間
    @Persisted var creatTime: String = "" // 創建鬧鐘的時間,方便進行排序
    @Persisted var name: String = "" // 給自己設定的鬧鐘設定名稱,比如說:睡覺、工作
    @Persisted var repeatDays: List<Bool> = List<Bool>() // 後面設定重複天數的true or false
    @Persisted var sound: String = "" // 選擇鬧鐘響鈴聲的
    @Persisted var isEnabled: Bool = true // 控制鬧鐘的開關
    @Persisted var snoozeEnabled: Bool = true // 稍後提醒
    @objc dynamic var isOn: Bool = true
    // 讓我們可以在其他.swift檔也能使用參數
    convenience init(alarmTime: String, creatTime: String, name: String, repeatDays: [Bool] = Array(repeating: false, count: 7), sound: String, snoozeEnabled: Bool = true) {
         self.init()
         self.alarmTime = alarmTime
         self.creatTime = creatTime
         self.name = name
         self.sound = sound
         self.repeatDays.append(objectsIn: repeatDays)
         self.snoozeEnabled = snoozeEnabled
    }
}

如:時鐘的資料庫


View(視圖層)

  • 負責顯示資料給使用者
  • 包含 UI 元件(如 Label、Button、TableView)
  • 不直接處理資料邏輯,只負責「看起來怎麼呈現」
    https://ithelp.ithome.com.tw/upload/images/20250923/20178746VsHNzAm1Un.png
    如:留言板的介面

Controller(控制器層)

  • 負責協調 Model 與 View 之間的互動
  • 接收使用者操作,更新 Model
  • 從 Model 取得資料,更新到 View
  • 也是我們主要寫程式的地方

結語

透過MVC的架構我們可以專案更易於管理,ModelViewController 各自負責不同的角色,不會彼此混雜,當專案越來越大時,依然能保持程式碼的整潔與可讀性。


上一篇
Day 8 Swift 語法基礎知識 7
下一篇
Day 10 Xcode 專案建置
系列文
Swift一下就會了12
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言