はじめに
RxSwiftを使ってViewModelを設計する時、
特にKickstarterのViewModelインターフェースでは
プロパティの再定義が冗長で可読性を落としてしまう。
var hoge:PublishRelay<Hoge>
init() {
let _hoge = PublishRelay<Hoge>()
self.hoge = _hoge.asObservable()
}
これをプロパティ1つ1つ再定義していてはかなり無駄であるため、
これを解決するラッパーを使用する。
ラッパー
以下の記事を参考にした。
https://qiita.com/yokirin/items/a8df2bc9080ccf853724
これを使うと、上記の冗長な再定義がこうなる
いやあ神すぎる。。。個人的な1番の負債が一発で解消できた。
@PublishRelayWrapper var hoge:PublishRelay<Hoge>
init() {
}
再定義がいらない。
使用するときは、self.$hogeで使用する。(リンク先を参考に。)
終わりに
KickstarterのViewModelインターフェースは使いやすいが、
冗長な再定義でずっと悩んでいた。それをラッパーで解決できたので
これから気持ちよく使っていけそう。
自分でラッパーを用意できるようになりたいところ。