おととい RxSwift の 2.0.0 RC がリリースされたので さっそくアップデートしてみました。
ところが たくさんのビルドワーニングが出てしまったので その対処をまとめます。
追記(2016-01-02)
さきほど 2.0.0 がリリースされました。
2.0.0 では Variable から ObservableType の実装自体が取り除かれており、同プロトコル由来のメソッドを使うとビルドエラーになります。
Removes deprecated APIs.
https://github.com/ReactiveX/RxSwift/commit/aca3b2821339654f936dabf7b201f112e0e8a780#diff-0e55b16927fa1b61df214216489f0599L19
ビルドワーニング詳細
ワーニングの内容としては Variable が ObservableType でなくなるというものです:
'Variable' is deprecated: Variable will remain in the 2.0.0 API, but just use
variable.asObservable()because it won't beObservableType(no way to warn about deprecated interface implementation). Just do,variable.asObservable().map { _ in ...}and ignore this warning.
CHANGELOG にも記載がありました:
Deprecates Variable implementing ObservableType in favor of asObservable().
https://github.com/ReactiveX/RxSwift/blob/83bac6db0cd4f7dd3e706afc6747bd5797ea16ff/CHANGELOG.md#deprecated
対処方法
対処方法としては Variableオブジェクト をいちど asObservable メソッドで Observable に変換したのち ObservableType のメソッドを使います。
注意点として、Observable は Variable と異なり .Completed を出力します:
Now variable also sends .Completed to observable sequence returned from asObservable when deallocated.
https://github.com/ReactiveX/RxSwift/blob/83bac6db0cd4f7dd3e706afc6747bd5797ea16ff/CHANGELOG.md#deprecated
参考資料
- [Deprecates
VariableimplementingObservableTypein favor of `asOb…] (https://github.com/ReactiveX/RxSwift/commit/8b2984e4e28e27da33476dc17db94166d072afc0#diff-3e60cec73204dcf051118fed9641c4f1)