M: Model
V: View
C: Controller -> ViewController
M: Model -> 데이터
V: View -> ViewController
VM: View Model -> 비즈니스 로직 포함
class FoodViewModel: ObservableObject {
var container: NSPersistentContainer!
var selectedDate: String?
@Published var foodData: [FoodDTO] = []
init(){
print("FoodViewModel - init()")
fetchFoodData()
}
}
// 뷰모델 관련
extension ViewController {
// 뷰모델의 데이터를 뷰컨의 리스트 데이터와 연동
fileprivate func setFoodBindings() {
print("ViewController - setFoodBinding()")
self.foodViewModel.$foodData.sink { (updatedData: [FoodDTO]) in
self.foodData = updatedData
self.imgCollectionView.reloadData()
}.store(in: &disposableBag)
}
}