以下是我的注册代码
self.signedUp = signUpButtonTap.withLatestFrom(userAndPassword).flatMapLatest{
input -> Observable<Response> in
return Observable.create { observer in
let userData = Creator()
userData?.username = input.0
userData?.password = input.1
provider.request(.signIn(userData!)).filter(statusCode: 200).subscribe{ event -> Void in
switch event {
case .next(let response):
observer.onNext(response)
case .error(let error):
let moyaError: MoyaError? = error as? MoyaError
let response: Response? = moyaError?.response
let statusCode: Int? = response?.statusCode
observer.onError(error)
default:
break
}
}
return Disposables.create()
}
}
以下是视图中的绑定
self.viewModel.signedUp.bind{response in
self.displayPopUpForSuccessfulLogin()
}
当有一个成功的响应时,它的工作正常。
但是,当请求超时或我收到 200 以外的任何其他状态代码时,我收到以下错误“fatalError(lastMessage)”并且应用程序崩溃。
当我在 case .error 中将observer.onError(error) 替换为observer.onNext(response) 时,它适用于200 以外的响应代码,但在请求超时时再次崩溃。
我已经结合绑定到 tableView (Moya, RxSwift, RxCocoa) 完成了这个链接处理网络错误
谁能帮我解决问题。我对 RxSwift 完全陌生。任何帮助将不胜感激。谢谢