将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
分机。现在返回一个
Single
而不是
Observable
所以为了避免编译器错误,我还需要插入
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
服务正确。
-
我该如何让它再次工作(理想情况下不需要完全改变整个设置,以及
-
(对于额外的学分)如何充分利用
单身
而不是
可观察的
(因为我假设
asObservable
我只是错过了一些有用的特性/干净的代码)