회고
[나는 바보다 2] 이상한게 있으면, 관련 클래스를 다 찾아보자
최지철
2023. 11. 16. 03:04
반응형
0.들어가기 앞서
나는 바보다 시리즈는 제가 개발과정중 너무나도 당연하면서도 어처구니 없는 실수를 했던것을 기록하여 스스로 반성하고자 만든 시리즈입니다.
1. 나는 바보다.
클린아키텍처 + MVVM 과 RxSwift를 적용해서 프로젝트 리팩토링중, 서비스 -> 레포지 -> 유스케이스 -> 뷰모델 까지는 데이터가 다 잘 전달 되는데.. 뷰컨에서 구독을 해도 바인딩을 해도 정보가 나타나지 않는것이었다... 2시간동안 잡고 있었는데.. 하...
2. 다시는 바보가 되지말자.
범인은 베이스 뷰컨트럴로에 viewDidLoad에 binding함수를 넣지 않은 것 이었다.
class BaseViewController: UIViewController {
var disposebag = DisposeBag()
func layout(){}
func configure(){}
func addview() {}
func binding() {}
// MARK: 탭시 키보드 내리기
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
view.endEditing(true)
}
override func viewDidLoad() {
super.viewDidLoad()
self.view.backgroundColor = .white
self.configure()
self.addview()
self.layout()
self.binding() <--- 요놈을 안넣고잇었음 ㅎㅎ..
}
class HomeViewModel: ViewModelType {
let homeInfo = PublishSubject<PerfumeDataDTO>()
let commentLabelTitle = PublishSubject<String>()
let usecase: HomeUseCaseProtocol
var disposeBag = DisposeBag()
struct Input {
}
struct Output {
}
func transform(input: Input) -> Output {
let output = Output()
return output
}
init(usecase: HomeUseCaseProtocol) {
self.usecase = usecase
}
func updateHomeInfo() {
print("뷰모델 - updateHomeInfo 호출")
usecase.getHomeInfo()
.subscribe(onSuccess: { [weak self] info in
print("뷰모델에 정보 들어옴")
self?.homeInfo.onNext(info)
}, onFailure: { error in
print("에러 발생: \(error)")
})
.disposed(by: disposeBag)
}
}
viewModel.homeInfo
.withUnretained(self)
.bind(onNext: { info in
print("뷰컨에서 정보감지: \(info)")
})
.disposed(by: disposebag)
ㅋㅋㅋㅋㅋprint로 디버깅 사투의 흔적... 하.. 그래도 다행이다
히
반응형