【问题标题】:How to get the status code in the onNext case while subscribing to an Observable订阅 Observable 时如何在 onNext 案例中获取状态码
【发布时间】:2017-05-03 11:32:18
【问题描述】:

我在我的 swift 应用程序中使用 Moya 来处理网络请求。

我之前用过alamofire,熟悉如何发帖、获取请求和阅读响应。

以下是我提出请求并订阅 observable 的代码

provider.request(.getDetails)
            .mapArray(Post.self)
            .subscribe { event -> Void in
                switch event {
                case .next(let post):
                 self.sampleText.text = posts.first?.title
                case .error(let error):
                    print(error)
                default:
                    break
                }
            }.addDisposableTo(disposeBag)

在 .next 案例中,我还想检索状态码和 response.data。

当 observable 的类型为 Response 时,我可以这样做,但是当我将其映射到 Post 类型时,我无法获取状态码。

如何在 .next 或错误情况下获取请求的状态码

任何帮助将不胜感激。谢谢。

【问题讨论】:

    标签: ios swift observable rx-swift moya


    【解决方案1】:

    也许是这样?使用zip

    let provider: RxMoyaProvider<Api> = RxMoyaProvider<Api>()
    let observable1: Observable<Response> = provider
        .request(.getDetails)
        .shareReplay(1)
    let observable2: Observable<[Post]> = observable1
        .map({ _ in () }) // You map to Post.self here
        .shareReplay(1)
    Observable
        .zip(observable1, observable2){($0, $1)}
        .subscribe({ (event) in
            // event has Response + Posts array
        })
    

    combineLatest 也可以像zip 一样提供帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-17
      • 1970-01-01
      • 2019-01-20
      • 1970-01-01
      • 2017-07-08
      相关资源
      最近更新 更多