【RxSwift】KickstarterのViewModelインターフェースをスマートにするラッパー


はじめに

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インターフェースは使いやすいが、
冗長な再定義でずっと悩んでいた。それをラッパーで解決できたので
これから気持ちよく使っていけそう。
自分でラッパーを用意できるようになりたいところ。