Rodhos Soft

備忘録を兼ねた技術的なメモです。Rofhos SoftではiOSアプリ開発を中心としてAndroid, Webサービス等の開発を承っております。まずはご相談下さい。

ReSwiftの流れ

ReSwiftというSwiftのRedux実装のライブラリを触ってみました。

github.com

  1. アプリはStoreを一個持ちStoreはこちらで定義した状態(State)を持ちます。
  2. 各種のReducerというのをStoreに登録します。
  3. ReducerはActionが発行されたらどのようにStateを変更するのか各自で定義します。
  4. ボタンがタップされたなどのイベントが起きたとき、プログラマはアクションをストアに送ります(dispatch)、するとストアではReducerに今の状態とアクションを食わせて新しい状態にします。
  5. 新しい状態はそれを監視(subscribe)しているオブジェクトにnewStateとして通知されるという具合です。

擬似コードでのまとめ

State定義

Action定義

各種Reducer定義

Reducer (Action, State) -> State

Store作成

Store = {State, Reducers}

状態更新を受取りたい場合

Store.subscribe(User)

タップのイベント等が起きたことを通知

Store.dispatch(Action)

reducerによってState更新され状態変更が通知される。

ViewControllerはアクションを発行し状態変更通知を受けたら状態に基づいてUIを変更するという流れになります。

参照

簡単なコードサンプルとして
GitHub - ReSwift/CounterExample: Demo Application of Unidirectional Data Flow in Swift, Built with ReSwift

より実際的な実装例は以下にありました。
qiita.com