저번 달에 왔던 각설이 마냥 죽지도 않고 돌아와서 RxSwift 예제를 들고 왔습니다. RxSwift의 기본적인 개념을 알고 계신 다는 전제 하에 아래 예제를 진행해보도록 하겠습니다. 해당 예제는 저의 깃헙에서 확인하실 수 있으니..이부분은 참고 부탁드립니다. (https://github.com/FlowSc/RxLoginExample)

일단 프로젝트 구성부터 살펴 보겠습니다.

저는 스토리보드를 별로 좋아하지 않기 때문에, 스토리보드는 고이 접어 보내도록 하고 스냅킷을 사용해서 UI 를 구성해보도록 하겠습니다.

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/730f4b31-3af6-4d74-b334-0b98080d2481/Untitled.png

스토리보드가 없으니 한결 더 깔끔해 보이는 것은 기분 탓만은 아니라고 생각합니다.

MVVM 은 Model - View - View Model 로 구성된 디자인 패턴입니다. Rx 와 잘 맞는다고 해서 열심히 써보도록 하겠습니다.

간단히 설명드리면 Model 에서 Business Logic 을 담당하고, View Model 에서 Presentation Logic 을 담당한다고는 합니다만, 로직이란게 마음처럼 쉽게 짜여지는 것도 아니고, 디자인 패턴이란 것이 결국 사용자가 편하기 위해서 인데 그렇게 빡빡하게만 하는 것이 과연 좋은 것인가? 라는 생각도 듭니다.

MVC 에서 MVVM 으로 이동할 때 가장 헷갈리는 부분 중 하나는 바로 Model 의 개념이었습니다. 사실 MVC 에서 Model 은 어찌 보면 Entity 로 많이 사용됩니다. 그래서 Model 에서 로직을 추가로 짠다? 개념적으로 잘 와닿지 않았는데, MVVM 에서는 Entity 를 아예 빼서 생각하면 이해가 쉽게 됩니다.

여기서 Entity 는 바로 User 입니다. 구성은 아래와 같습니다.

struct User: Codable {
    
    let name:String
    
    init(name:String) {
        self.name = name
    }
}