2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Swift】RxSwiftをTwitterで知り合った人に教えてもらったPart1

Last updated at Posted at 2021-04-06

#はじめに
ある日、RxSwift難しいよ〜的なツイートをしていたら、Twitterで先輩エンジニアの優しい方がDMで教えてくれることになったので、教えていただいたことをまとめていきたいと思います。

#InputとOutput
InputとOutputを使うことで疎結合にできる
プロトコルを使ってインターフェースを作り、Viewはインターフェース(InputとOutput)を介してViewModelにアクセスする
ViewがViewModelにアクセスするときはインターフェースを介すことを必須化するため、Viewでは以下のように書く。

View
private var viewModel: ViewModelType

このViewModelTypeはprotocolで、以下のように定義する

ViewModel
protocol ViewModelType {
    var inputs: ViewModelInput { get }
    var outputs: ViewModelOutput { get }
}

このプロトコル(ViewModelType)をViewのviewModelプロパティの型にしてあげることで、ViewがViewModelにアクセスするときは必ずinputsかoutputsを経由しないといけなくなります。
これによって、viewModelがインターフェースでないプロパティに直接アクセスしてしまうことを防ぐことができます。

#次回の予習
次回にやることをあらかじめ教えてもらったので、それの予習をしておきたいと思います。
・observable(ストリーム)
以下のようなイベントを検知するクラス
onNext, onError, onCompleted

・observer
observableがイベント発生元に対して、observerはイベント処理

・subscribe
observableを購読することができ、イベントを検知してクロージャを実行する

・accept
acceptでRelayに.nextイベントを送ることができる

#おわりに
次回
やっぱり難しいことを理解する最短の手は理解している人に教えてもらうことですね!

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?