をHTTPService
返す がありますObservable<NSData>
。私の目標は、そのサービスを別のサービスに構成して、ServiceA
そのデータを私のユース ケースに変換することです。Observable.create
RxSwift 2.0.0-rc.0 で使用ServiceA
するのは簡単です。私の質問は、のサブスクリプションから返された使い捨てを適切に処理する方法HTTPService
です。
何もしないと、コンパイル時にhttp://git.io/rxs.udresult of call is unused
という警告が表示されます。私が何もしなければ、おそらく大丈夫だということを読んで理解しました:(以下で言及されているのはxs
let xs: Observable<E> ....
xs が Completed または Error メッセージで予測可能な方法で終了する場合、サブスクリプション Disposable を処理しないことでリソースがリークすることはありませんが、要素の計算が予測可能な時点で終了するため、依然として好ましい方法です。
したがって、これが私が現在どのように対処しているか、また、これを適切に行っているかどうか、または何かを誤解していないかどうか疑問に思っている場所です。
public struct ServiceA{
public static func changes() -> Observable<ChangeSet>{
return Observable.create{ observable in
// return's Observable<NSData>
let request = HTTPService.get("https://httpbin.org/get")
let disposable = request.subscribe(
onNext: { data in
// Do more work to transform this data
// into something meaningful for the application.
// For example purposes just use an empty object
observable.onNext(ChangeSet())
observable.onCompleted()
},
onError:{ error in
observable.onError(error)
})
// Is this the right way to deal with the
// disposable from the subscription in this situation?
return AnonymousDisposable{
disposable.dispose()
}
}
}
}