모델 ( 데이터 ) ,뷰 ( UI ), 뷰 모델 ( 의존성이 없는 중간 참조 영역 )

Untitled

그림 출처

https://velog.io/@ryuhyewon/MVVM-개념과-장단점

모델 - 데이터와 관련된 코드를 담고 있다.

뷰 - View는 앱의 UI에 대한 코드를 담고 있는 계층 이다. View의 각 컴포넌트에 대한 정보를 담고, 어느 위치에 어떻게 배치될지 작성되어있다. View는 디자인적인 요소도 있지만, ViewModel로부터 데이터를 가져와 어떻게 배치할지, 특정 상황에 따라 ViewModel의 어떤 메서드를 이용할지에 대해서도 가지고 있다. 재사용성이 중요하다.

뷰모델 - ViewModel은 앱의 핵심적인 비즈니스 로직을 담고 있는 코드의 계층 이다. MVC 패턴의 Controller와 비슷한 역할을 하고 있다. View와 Model의 사이에서 View의 요청에 따라 로직을 실행하고, Model의 변화에 따라 View를 refresh

ViewModel

// Model
struct User {
		var name: String
		var age : Int
}
	
// View Model 
class ContentViewModel: ObservableObject{
		@Published var park: User = User(name: "park", age: 26) 
}

// View
struct ContentView : View{
		@ObservedObject var contentViewModel = ContentViewModel()

		var body = some View{
				VStack{
						Text("name : \\(self.contentViewModel.park.name)")
						Text("age : \\(self.contentViewModel.park.age)")
						Button(action:{
								self.contentViewModel.park.name = "young-june"
								self.contentViewModel.park.age = 27
						} label: {
								Text("Change Info")
						}
				}
		}
}

서버(DB) 모델

|

Model

|

화면에 쓰이는 모델 ⇒ ViewModel

text: String, image: UIImage, 등등

Entity