🥑

【SwiftUI】はじめてのMVVM

2021/11/25に公開

環境

  • Xcode13.0
  • Swift5.5
  • iOS15.1

MVVMとは

アーキテクチャの一つ。
SwiftUIと相性が良い😍
登場人物は、Model - ViewModel - View

MVVMの一番シンプルな構成のメモ。
ここから発展させていく。

Model

Fruit.swift
/// 果物を表すモデル
struct Fruit {
    var name: String
}

ViewModel

FruitManager.swift
/// Viewで果物を保持するのではなく、ViewModelで保持してあげる。
class FruitManager: ObservableObject {
    /// @Publishedのおかげでプロパティに変更があるとViewが再描画されるよ
    @Published var storedFruits: [Fruit] = [Fruit]()
}

View

FruitView.swift
struct FruitView: View {
    // iOS14.0以降...
    @StateObject var manager: FruitManager = FruitManager()
    
    // iOS13.0
    @ObervableObject var manager: FruitManager = FruitManager()
    
    var body: some View {
        Text("\(manager.storedFruits.count)").padding()
    }
}

Discussion