【Swift/Combine】handleEventsメソッドの使い方と役割!イベント取得

この記事からわかること
- SwiftのCombineフレームワークの使い方
- handleEventsメソッドの役割
- 実装サンプル
- イベント取得
- receiveSubscription/receiveOutput/receiveCompletion/receiveCancel/receiveRequestの違い
\ アプリをリリースしました /
環境
- Xcode:15.0.1
- iOS:17.0
- Swift:5.9
- macOS:Sonoma 14.1
SwiftのCombineフレームワークとは非同期処理やストリーム処理、データのバインディング、イベントハンドリングなどのリアクティブプログラミングに倣った機能を提供しているApple純正のフレームワークです。今回はその中のhandleEventsメソッドについてまとめていきます。
handleEventsメソッドとは?
handleEvents
メソッドはPublisherの任意のイベントが発生した際に指定のクロージャを実行するメソッドです。このメソッドを使用することでパブリッシャーのイベントに応じた処理を挿入することが可能になります。監視できるイベントは値の発行や、エラー、完了などです。
handleEvents
メソッドを付与しても購読が始まるわけでないのでsink
メソッドを実行して購読を開始する必要があります。
監視できるイベント
監視できるイベントを具体的には以下の5種類となっています。
receiveSubscription
パブリッシャーが上流パブリッシャーからサブスクリプションを受け取ったときに実行されるオプションのクロージャ
receiveOutput
パブリッシャーが上流のパブリッシャーから値を受け取ったときに実行されるオプションのクロージャ
receiveCompletion
上流のパブリッシャーが正常に終了するか、エラーで終了するときに実行されるオプションのクロージャ
receiveCancel
ダウンストリーム受信者がパブリッシュをキャンセルしたときに実行されるオプションのクロージャ
receiveRequest
パブリッシャーが追加の要素のリクエストを受け取ったときに実行されるオプションのクロージャ
実装サンプル
例えばイベントのタイミングでログを出力する場合は以下のようになります。
出力
省略記法
handleEvents
メソッドの各引数はデフォルト値でnil
が渡されているので全て省略することが可能です。そのため必要なもののみ使用することができます。
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。