【发布时间】:2019-07-12 21:22:25
【问题描述】:
我有一个登录屏幕,我之前在文本字段上方显示错误输入并通过组合电子邮件/密码 Bool Observable 禁用按钮,但是现在设计已更改,我想在发送请求之前检查电子邮件/密码是否不为空或显示警报对话框
我的问题是如何在发出请求之前验证输入是否有效:
登录视图模型:
var emailValid: Observable<Bool> {
return emailSubject.asObservable().map { $0.count > 0 && $0.isEmail}
}
signInDidTapSubject
.withLatestFrom(credentialsObservable)
.flatMapLatest { credentials -> Observable<Event<Result<UserResponse>>> in
self.loadInProgress.accept(true)
return network.login(with: credentials).materialize()
}
.subscribe(onNext: { [weak self] event in
self?.loadInProgress.accept(false)
switch event {
case .next(let result):
switch result{
case .Success(let user):
self?.loginResultSubject.onNext(user)
case .Failure(let error):
self?.errorsSubject.onNext(error)
}
case .error( _):
print("error")
default:
break
}
})
.disposed(by: disposeBag)
VC:
loginButton.rx.tap.asObservable()
.debounce(0.5, scheduler: MainScheduler.instance)
.subscribe(viewModel.input.loginButtonTapped).disposed(by: disposeBag)
【问题讨论】:
标签: swift mvvm observable rx-swift