RxSwiftRxSwiftで元々のストリームからcompletedをつぶす(消し去る)方法を考えてみました。concat(Observable.never())する結論から言うと、concat()とnever()を使うことでcompletedをつぶすことができます。disposeBag)以下、実行結果です。next(1)next(2)next(3)completed====next(1)next(2)next(3)そのままsubscribeするとcompletedが流れていたストリームが、concat(Observable.never())を使うことでcompletedが流れないストリームに変化していることが分かります。concatとは?concatを使うと、複数のObservableの出力を連結して単一のObservableのように動作させることができます。最初のObservableによって流されたイベントのすべてが、2番目のObservableによって流されたイベントの前に流されます。disposeBag)以下、出力結果です。next(1)next(2)next(3)completed====next(4)next(5)next(6)completed====next(1)next(2)next(3)next(4)next(5)next(6)completedconcatを使うことでstream1からのcompletedが除去され、続けてstream2が流れるようになっています。neverとは?errorやcompletedも含めて、一切のイベントを発生させないObservableを作ることができます。disposeBag)print("====")以下、実行例です。========next/error/completed、どのイベントも発生していないことが分かります。concatでneverを後ろにくっつけるconcatとneverの働きを踏まえながらさきほどのコードを読んでみましょう。completed」とイベントが流れるストリームです。それに対してneverはイベントが何も流れないストリームです。この2つをconcatでつなげると、stream1末尾のcompletedが除去され、そこに何も流れないneverが連結されることになります。結果としてstream1のcompletedが除去されることになります。まとめストリームのcompletedを除去するには、concat(Observable.never())を使えば良い。までお知らせください!この記事を書いた人あきお(@akio0911)派手髪iOSエンジニア。Twitterアカウントは@akio0911。YouTubeチャンネル「あきおチャンネル」にてiOSアプリ開発講座を公開中。iPhoneレッスンノート」など。iOSアプリ開発をテーマとしたオンラインサロン「アプリ道場サロン」を運営。東京・大阪にてアプリ開発講座「アプリクリエイター道場」を主催。dematealizeを使ってみたこんな人がブログを書いています派手髪iOSエンジニアの「あきお」です。Twitterアカウントは@akio0911。YouTubeチャンネル「あきおチャンネル」にてiOSアプリ開発講座を公開中。iOSアプリ開発をテーマとしたオンラインサロン「アプリ道場サロン」を運営。iPhoneレッスンノート」など。未経験者向けのiPhoneアプリ開発講座「アプリクリエイター道場」を東京や大阪などで開講しています。こんにちは、あきお(@akio0911)です。画面遷移後にUITableViewのセルが選択状態のままになってしまうのを防ぐこんにちは、あきお(@akio0911)です。ログイン済み状態でアプリを起動するとナビゲーションバーが表示されない時の対処方法こんにちは、あきお(@akio0911)です。配列を使って冗長なswitchをシンプルにするこんにちは、あきお(@akio0911)です。アプリ道iOSアプリ開発初心者向けに公式ドキュメントの読み方・探し方を解説しますこんばんは、@akio0911です。卵は世界である"鳥は卵の中からぬけ出ようと戦う。生まれようと欲するものは、一つの世界を破壊しなければならない。