У меня есть следующая функция в моем классе веб-сервиса:
func loadTransport() -> Observable<[TransportResponse]> {
let nonce = "\(Date().timeIntervalSince1970)"
let csaKey = try! config.apikey()
let csaSecret = try! config.apiSecret()
let csaSignature = crypto.generateSignature(nonce: nonce, url: "http://*****/v1/nmbs", body: "", secret: csaSecret)
print("SIGNATURE = \(csaSignature)")
let endpointClosure = { (target: TransportService) -> Endpoint<TransportService> in
let url = target.baseURL.appendingPathComponent(target.path).absoluteString
let endpoint = Endpoint<TransportService>(URL: url, sampleResponseClosure: {.networkResponse(200, target.sampleData)}, method: target.method, parameters: target.parameters)
return endpoint.adding(newHttpHeaderFields: ["CSA-KEY": csaKey,"CSA-NONCE": nonce,"CSA-SIGNATURE": csaSignature])
}
let provider = RxMoyaProvider<TransportService>(endpointClosure: endpointClosure, plugins: [NetworkLoggerPlugin(verbose: true)])
return provider
.request(TransportService.nmbs)
.filterSuccessfulStatusCodes()
.mapArray(type: TransportResponse.self)
}
И в моей TransportViewModel у меня есть этот метод инициализации:
init(webService: Webservice) {
self.webService = webService
title.value = String.localizedString(key: "transport_title")
transportResponse = active.asObservable()
.filter { $0 }
.flatMap { _ in
return webService.loadTransport()
}
.map { response in
return [TransportData(items: response)]
}
}
Проблема в том, что он входит в мой метод flatMap
, но никогда не входит в map
ниже flatMap
.
Когда я добавляю часть подписки в свою функцию веб-сервиса следующим образом:
let provider = RxMoyaProvider<TransportService>(endpointClosure: endpointClosure, plugins: [NetworkLoggerPlugin(verbose: true)])
provider
.request(TransportService.nmbs)
.filterSuccessfulStatusCodes()
.mapArray(type: TransportResponse.self)
.subscribe { event in
switch event {
case .next(let response):
print(response)
case .error(let error):
print(error)
default: break
}
}.addDisposableTo(disposeBag)
Я вижу, что мой ответ напечатан правильно. Может ли кто-нибудь помочь мне с этим?
TransportResponse
модели. - person sunshinejr   schedule 01.02.2017