AS-IS
requestAuthCodeResult.map { result -> (Bool,String?) in
switch result{
case .success(let data):
if data.status == 200, data.message == UserConst.SUCCESS{
return (true,nil)
}else{
return (false, data.message)
}
case .failure(let error):
return (false ,error.localizedDescription)
}
}.bind(to: self.requestMailCode)
.disposed(by: bag)
vm.requestMailCode.filter{$0.0}
.bind(onNext:{[weak self] result in
print(result)
guard let self = self else{return}
self.emailRequsetSuccess()
}).disposed(by: bag)
viewModel 에서 network 통신결과를 PublishRelay로 바인드 해준뒤 viewcontroller에서 UI를 수정하는 코드를 작성함. (self.emailRequstSuccess() 에서 수정함.)
오류발생

→ UI수정이 메인쓰레드가 이닌곳에서 발생했다는 오류
viewModel
requestMailCode = requestAuthCodeResult.map { result -> (Bool,String?) in
switch result{
case .success(let data):
if data.status == 200, data.message == UserConst.SUCCESS{
return (true,nil)
}else{
return (false, data.message)
}
case .failure(let error):
return (false ,error.localizedDescription)
}
}.asSignal(onErrorJustReturn: (false, "잠시후 다시 시도해 주세요"))
viewController
vm.requestMailCode.filter{$0.0}
.emit(onNext:{[weak self] result in
print(result)
guard let self = self else{return}
self.emailRequsetSuccess()
}).disposed(by: bag)