솔직히,, MVC나 MVP나 MVVM이나 머가 그렇게 다른지 잘 이해가 안가긴합니다.. 모델과 뷰를 분리하고 이를 컨트롤하는 영역을 어떻게 처리하면 좋을까 하는데서 조금씩 차이가 있어서 구분하려는게 목적인 걸까요. 뷰모델이라 한다해도 처리해야할 복잡성이 올라가면 결국 복잡해지는 건 똑같아 보입니다.. 그럼에도 불구하고 UIKit을 사용할 때 NVVM을 쓸라고 하는건 테스트가 용이하다는 이유랑, 그냥 옵저버 패턴 쓰고 싶어서인 것 같습니다. Combine이 나온 것도 뭔가 너네가 옵저버 방식 좋아하는 것 같으니까 만들었어 같은 느낌인 것 같고,, SwiftUI를 공부하면서 보니까 자연스럽게 Combine 쓰게되고 쓰다보니 자연스레 아래처럼 구조가 분리되는 것 같은데 이게 NVVM이 맞는 걸까요? 뷰(들어오는 데이터 대로 그려지는 뷰 구조체 모음) 모델(타입 or 인터페이스 모음) 로직(뷰의 로직 처리 함수모음) 스토어(상태 데이터모음)
안녕하세요 sunflower 예제와 해당 강의를 참고해서 프로젝트를 진행중인데요 repository에서 통신(retrofit2 사용합니다)을 요청해서 값을 받아와서 해당 값을 viewmodel이 전달받아 LiveData에 전달하여 UI컴포넌트에서 view를 그려주고 있습니다. 딱 이구조를 참고해서 만들고 있습니다. 그런데 통신 요청과정중 Exception이 발생했을때 Throwable 데이터를 viewmodel에 error라는 라이브데이터로 전달하여 UI컴포넌트에서 유저에게 Exception 관련 Dialog를 노출하고 싶은데 Repository에서 viewmodel에 error를 어떻게 전달해야 할지 방법을 못찾고 있습니다. 제가 참고한 예제에서는 Repository에서 정상적인 통신으로 전달받은 data만 반환해주는 메서드이기때문에 예외가 발생했을때 Error에 대해 Viewmodel로 전달할 방법을 고민중입니다. 단순하게 Data와 Error을 묶을 상위 클래스를 객체화 시켜 반환하는 방법도 생각해봤는데 paging3도 함께 사용중인데 이경우에도 사용할수있는 깔끔한 방법이 생각이 안나서 질문 드립니다. 혹시 참고할만한 예제를 알고 있으시다면 알려주시면 감사하겠습니다. 두서없고 정리안된 질문 죄송합니다.. 지금 머리속이 너무 복잡해서요 ㅠㅠ