ios - 订阅 Observable 时如何在 onNext 情况下获取状态码

标签 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)

在下一个例子中,我还想检索状态代码和response.data。

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

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

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

最佳答案

也许是这样?使用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 相同的帮助

关于ios - 订阅 Observable 时如何在 onNext 情况下获取状态码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43758861/

相关文章:

ios - 无法确定弹出箭头方向

ios - 无权从照片库中挑选照片

javascript - 使用rxjs实现指数补偿

angular - 通过映射将类型(接口(interface))转换为可观察的

events - 在多线程代码中使用 F# 事件和异步事件

ios - 如何在 UITableViewCell 中创建 "underline"文本?

ios - 选择一个角色 - Swift/SpriteKit

ios - '[NSObject : AnyObject ]' is not identical to ' NSDictionary', RKPathMatcher 问题

xcode - 在 Swift 中返回一个未包装的可选?

ios - 准备 CoreML 模型时出错 : "<something>" is not supported for CoreML code generation