Обновление моего 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
выполнены правильно.
- Как мне заставить это работать снова (в идеале, без полного изменения всей настройки, и
- (за дополнительную плату), как воспользоваться всеми преимуществами обновленной установки с
Single
вместо Observable
(поскольку я предполагаю, что при использовании asObservable
я просто упускаю полезные функции / более чистый код)