将我的 iOS 应用程序从 Moya 8 更新到 11,并且我在网络实用程序类中有以下函数,该函数被调用以从服务器获取数据并将其映射以供其他类使用:
func getServerData(endpoint: MyMoyaService) -> Observable<Any> {
let provider = RxMoyaProvider<MyMoyaService>()
return provider.request(endpoint)
.filterSuccessfulStatusAndRedirectCodes()
.mapJSON()
.flatMap { response -> Observable<Any> in
return Observable(…)
}
}
随着更新,RxMoyaProvider
被替换为MoyaProvider
,而不是你应该用来使用.rx
扩展RxSwift
。现在返回 aSingle
而不是Observable
so 为了避免我还需要插入的编译器错误asObservable()
func getServerData(endpoint: MyMoyaService) -> Observable<Any> {
let provider = MoyaProvider<MyMoyaService>()
return provider.rx.request(endpoint)
.asObservable()
.filterSuccessfulStatusAndRedirectCodes()
.mapJSON()
.flatMap { response -> Observable<Any> in
return Observable(…)
}
}
但是该flatMap
部分根本没有被调用,我的网络调用不再起作用。如果我在没有 RxSwift 的情况下执行此操作,只需打开结果,它就可以正常工作(但这不适合我当前的设置),所以我知道网络调用和自定义TargetType
服务的更新都正确完成。
- 我怎样才能让它再次工作,(理想情况下不完全改变整个设置,和
- (以获得额外的信用)我如何充分利用更新的设置
Single
而不是Observable
(因为我假设通过使用asObservable
我只是错过了有用的功能/更清洁的代码)