MVVM

김시온·2021년 2월 27일
0

Swift

목록 보기
1/8

MVVM (Model - View - ViewModel)이란?

  • 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

  • Model - View 간의 복잡도를 해결하기 위해 존재하는 연결고리
  • 간단한 앱에서는 ViewModel 생략 가능
  • Intent 처리

예시

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()
    }
}

0개의 댓글

관련 채용 정보