[iOS] MVVM 정리

HL·2022년 4월 29일
0

iOS

목록 보기
1/22

설명

MVC

M: Model
V: View
C: Controller -> ViewController

  • VC에 비즈니스 로직 포함
    • 데이터 가져오기, 데이터 추가 등

MVVM

M: Model -> 데이터
V: View -> ViewController
VM: View Model -> 비즈니스 로직 포함

  • View Controller의 역할을 덜어줌

구현

  • VM에서 데이터 가져오기, 변환, 저장 등
  • VC에서 RxSwift, Combine 등 사용하여 VM을 구독

ViewModel

class FoodViewModel: ObservableObject {
    
    var container: NSPersistentContainer!
    var selectedDate: String?
    
    @Published var foodData: [FoodDTO] = []
    
    init(){
        print("FoodViewModel - init()")
        fetchFoodData()
    }
}

View(VC)

// 뷰모델 관련
extension ViewController {
    
    // 뷰모델의 데이터를 뷰컨의 리스트 데이터와 연동
    fileprivate func setFoodBindings() {
        print("ViewController - setFoodBinding()")
        
        self.foodViewModel.$foodData.sink { (updatedData: [FoodDTO]) in
            self.foodData = updatedData
            self.imgCollectionView.reloadData()
        }.store(in: &disposableBag)
    }
}
profile
Frontend 개발자입니다.

0개의 댓글