MVVM


モデル-ビュー-ビューモデルとは?
  • SWIFTUIプロジェクトの第一選択の設計モード
  • コードの細分化;MVCとは違います.
  • Model
  • データ&論理
  • UIとは独立した
  • struct Game {
    	var cards: [Card]
        func choose(var idx...) { ... }
    View
  • 画面表示
  • struct ContentView: View {
    	var body: some View {
        	Text("Hello World!")
        }
    }
    ViewModel
  • モデル-
  • を接続してビュー間の複雑さを解決
  • 単純なアプリケーションでは、ViewModel
  • を省略できます.
  • Int処理
  • import SwiftUI
    
    // View
    struct ContentView: View {
        @State var viewModel = ContentViewModel()
        
        var body: some View {
            VStack {
                Text(viewModel.name)
                
                Text(viewModel.age)
                
                Button("Change Name") {
                    viewModel.changeName("Tom")
                }
            }
        }
    }
    
    // ViewModel
    class ContentViewModel: ObservableObject {
        @Published private var alice = Person(name: "Alice", birthday: Date())
        
        var name: String {
            return alice.name
        }
        
        var age: String {
            return "32"
        }
        
        // Intent
        func changeName(_ name: String) {
            alice.name = name
        }
    }
    
    // Model
    
    struct Person {
        var name: String
        var birthday: Date
    }
    
    struct ContentView_Previews: PreviewProvider {
        static var previews: some View {
            ContentView()
        }
    }