뷰에 보여질 데이터는 뷰모델에서 최종적으로 결정되어야 하는 것인가요?

안녕하세요, 코더스하이에서 앱제작 강의를 수강했고, 지금은 독학으로 SwiftUI를 배우며 작은 앱을 하나 만들어 보고 있는 학생입니다.

간단한 단어장 앱을 제작하고 있는데요, 단어장 뷰에서 다음과 같이 외운단어와 외우지 않은 단어를 나눠서 보여주고 싶습니다.

모델에 isMemorized라는 Bool 변수를 선언해서 데이터를 불러올 때 filter를 통해 나눠서 뿌려주려고 합니다.

이 때 뷰모델에서 외운 단어와 못 외운 단어 각각의 리스트틀 따로 publish해서 뷰에 뿌려주는게 적절할까요, 아니면 뷰에서 filter를 통해 하나의 published 리스트 값을 나눠서 뿌려주는게 적절할까요…? ㅠㅠ

MVVM 패턴에 대해 잘 이해가 가지 않아 질문 남겨봅니다…

좋아요 1

두가지 경우 모두 MVVM 패턴에 위배되는 것은 아닌 것 같습니다.
그러나 효율성을 생각한다면,
View에서 filter를 통해 나누는 것이 좋을 것 같습니다.

ViewModel에서 각각의 리스트를 따로 만들게 되면,
만약 외운 단어와 못 외운 단어를 모두 보여줄 필요가 생기는 경우에는 또 Merge를 해야하는 문제가 발생할수도 있고, 하나의 리스트로 관리를 해야 중복과 같은 오류도 발생할 가능성이 낮아질 것으로 보입니다.

ViewModel에서는 set으로 하나의 published를 가지고 있다가,
View에서는 filter를 통해 각각의 array로 변환하고, 특정 기준값(알파벳 순, 날짜 순 등)에 따라 sort하면 될 것 같습니다.

좋아요 1

감사합니다!! 덕분에 어떤 식으로 리스트를 나눠야 할지 감이 잡혔네요 ㅎㅎㅎ

좋아요 1