- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
以下是我的注册代码
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()
}
}
以下是View中的绑定(bind)
self.viewModel.signedUp.bind{response in
self.displayPopUpForSuccessfulLogin()
}
当有成功的响应时,它就可以正常工作。
但是当请求超时或我收到 200 以外的任何其他状态代码时,我会收到以下错误“fatalError(lastMessage)”并且应用程序崩溃。
当我在 .error 情况下将observer.onError(error)替换为observer.onNext(response)时,它适用于 200 以外的响应代码,但当请求超时时再次崩溃。
我已经浏览过这个链接Handling Network error in combination with binding to tableView (Moya, RxSwift, RxCocoa)
任何人都可以帮我解决问题吗?我对 RxSwift 完全陌生。任何帮助将不胜感激。谢谢
最佳答案
如果 provider.request(.signIn(userData!))//...
在某个后台线程上返回结果,结果将绑定(bind)到后台线程中的 UI 元素,这可能会导致非确定性崩溃。
应该是
provider.request(.signIn(userData!))
.observeOn(MainScheduler.instance) // ...
关于ios - 使用mvvm模型的RxMoya请求总是在observer.onError(error)中崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47143880/
我正在尝试实现一个处理网络和 API 错误的函数,我的问题是如何在 filterSuccessfulStatusCodes() 之后再次发出一个 observable。我遇到的主要问题是,在第一次订阅
我将最新版本的 Moya 与 RxSwift 一起使用,我遇到了一个逻辑问题,目前我找不到解决方案。 假设我有一个带有实现以下接口(interface)的 ViewModel 的 UITableVie
我正在为搜索字段使用 MoyaRx 网络,并希望在该字段为空时取消请求。 let response = request .flatMapLatest { provider.rx
以下代码有效: let provider = RxMoyaProvider( stubClosure: MoyaProvider.delayedStub(3)) provider
我是一名优秀的程序员,十分优秀!