1
は、私はこのような2つの方法を持っています。だから私はこれがFlatMapでできることだと思った。しかし、私はこれらをどのようにチェーン化するのか分かりません。RXSwift flatMap二つの方法
次のように私が試した:
self.remoteService.rxGetAllTonicsForLanguage(language)
.subscribeOn(ConcurrentDispatchQueueScheduler(globalConcurrentQueueQOS: .Background))
.flatMap{tonics -> Observable<[Tonic]> in
print("Tonics: \(tonics)")
let x = tonics as! [Tonic]
return TonicAdapter.sharedInstance.saveTonics(x)
}.observeOn(MainScheduler.instance)
.subscribe({ e in
switch e {
case .Next(let element):
if let result = element as? String {
DDLogDebug("Saved something \(result)")
}
case .Error(let e):
DDLogError("Error in save tonics \(e)")
case .Completed:
DDLogDebug("Completed save tonics")
}
}
).addDisposableTo(self.disposeBag)
それは私に戻りTonicAdapterのライン上でこのエラーを与える:
Cannot convert return expression of type 'Observable<AnyObject?>' (aka 'Observable<Optional<AnyObject>>') to return type 'Observable<[Tonic]>' (aka 'Observable<Array<Tonic>>')
両方の方法は、観測を戻ってきているので、私は問題が表示されないのですか?
'saveTonics'で宣言された戻り値の型をObservableからObservable <[Tonic]>に変更する必要があります。または、同じ変更をキャストすることもできます(常にそうであることが確かな場合)。 –
Putz1103
ありがとうございます。私はコードに入っていて、私はそれを書いたのとは違っていました:-)。 – user1007522