如何在订阅Observable时获取onNext案例中的状态代码

时间:2017-05-03 11:32:18

标签: ios swift observable rx-swift moya

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

我之前使用过alamofire,我熟悉如何发帖,获取请求和阅读回复。

以下是我提出请求并订阅可观察

的代码
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或错误案例中获取请求的状态代码

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

1 个答案:

答案 0 :(得分:0)

也许这样?使用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

一样提供帮助