Project/[release]iOS - Bitnote

[iOS_개발자 단어장] MVVM 아키텍쳐 변경

고양이의시간 2020. 7. 25. 11:40

 

노트 입력 ViewController 에서 뷰모델, 비지니스 로직에 대한 부분을 분리

RxSwift 로 뷰와 뷰모델을 바인딩해서, 뷰모델이 변경되었을때 뷰가 자동 갱신되도록 변경

class NoteDetailViewModel {
    
    private let groupListModel = GroupListViewModel.sharedInstance

    // Subject: Observable + 외부에서 값 통제 가능
    var noteInputItemsOb = BehaviorRelay<[NoteInputType]>(value: [])
    
    // Input
    let titleText = BehaviorSubject(value: "")
    
    // Output
    let isTitleValid = BehaviorSubject(value: false)
        

    
    init(){
        _ = titleText.distinctUntilChanged()
        .map(checkTitleValid)
        .bind(to: isTitleValid)
    }
  
    
    private func checkTitleValid(_ title: String) -> Bool {
        return title != ""
    }

}