タグ

RxSwiftに関するdmizuno55のブックマーク (11)

  • UITextField.rx.textがイベントを発行するタイミング - Qiita

    キーボードでリターンキーをタップした時、入力されている文字列が2回ストリームに流れてくるので、UITextField.rx.textをサブスクライブしてAPIリクエストを行うなどの処理をしている場合は余計な通信が発生しないよう注意が必要です。 下記で紹介しているコードを見ていただければと思いますが、こうした余計なイベントへの対応としてUITextField.isEditingプロパティが使えるかもしれません。 また、UITextField.textにコードから文字列を代入した場合、UITextField.sendActions(for: .valueChanged)を実行しないとUITextField.rx.textイベントが流れてこない点も気をつけましょう。 画面とコード テストに使用した画面とコードを以下に載せておきます。 画面は一つのUITextFieldと二つのUIButtonで構

    UITextField.rx.textがイベントを発行するタイミング - Qiita
  • RxSwiftについてようやく理解できてきたのでまとめることにした(4) - Qiita

    Hot と Cold 4つめの記事です。 1つめの記事 2つめの記事 3つめの記事 HotなObservableとColdなObservableという用語があります。ここまでの説明の中で差に気づいた方もいるかもしれません。 簡単に言えば、HotなObservableはもともとあるものに対するObservable、ColdなObservableはsubscribeした瞬間にはじめて処理が実行されるObservableです。(←ここ大事です) 例えば、APIリクエストはColdなObservable、textFieldの値などは、HotなObservableです。 オペレータによる変換によって、Hot/Coldが変わることもあります。 例えば let fooObservable = textField.rx.text .map { $0?.isEmpty ?? false } のようにすると、

    RxSwiftについてようやく理解できてきたのでまとめることにした(4) - Qiita
  • RxSwiftのDebounceとThrottle - Qiita

    Swift愛好会 Advent Calendar 2017の12日目担当の @dekatotoroです。 昨日は、 @marty-suzukiさんの 「Swift4からprotocolのassociatedtypeでできるようになったこと」 でした。 今日は「RxSwiftのDebounceとThrottle」についてです。 RxSwiftのoperatorにDebounceとThrottleがありますが、 「あれ、どっちがどういう動作だったっけ?」と思ったことはありませんか。 忘れたときはこの記事を見てみてください パターンは3つあります。 Debounce Throttle (latest true) Throttle (latest false) 以下のストリームをを例にします。 ※ 確認したversionは RxSwift 4.0.0 let observable = Observ

    RxSwiftのDebounceとThrottle - Qiita
  • RxSwift UIAlertController を observable で表示 - Qiita

    やり方の例です。 UIAlertActionに相当するオブジェクトを定義 UIAlertActionのクロージャ部分は、onNext処理を入れたいので、事前に代わりになるクラスか構造体を定義しておく。 struct AlertAction { var title: String var style: UIAlertActionStyle static func action(title: String, style: UIAlertActionStyle = .default) -> AlertAction { return AlertAction(title: title, style: style) } } 表示部分 上で定義した構造体をUIAlertActionとしてUIAlertControllerにセットする。この時にクロージャ内の処理を定義すること。Observable生成の時

    RxSwift UIAlertController を observable で表示 - Qiita
  • RxSwiftのUITableViewとのバインディングまとめ - Qiita

    RxSwiftを使ってiOSのUIとデータをバインドするときに、ちょっと躓きやすいのがUITableViewとのバインディングです。少なくとも自分は躓きました。 ということで、調べたことをまとめておきます。 例として Item というクラスの配列が流れてくる items というObservableを、UITableView(tableView)とバインドすることを考えます。 パターンとしては、次の4つがあります。 パターン 1 let items: Observable<[Item]> = ... items .bind(to: tableView.rx.items(cellIdentifier: "Cell")) { row, element, cell in // row: Int …… アイテムのインデックス // element: Item …… アイテムのインスタンス // ce

    RxSwiftのUITableViewとのバインディングまとめ - Qiita
  • RxExample MVVM のその先へ(Fat ViewModel の倒し方) - Qiita

    この記事は、RxSwift が提供する公式のサンプルである RxExample で行き詰まった方向けに、実践的な対処方法を紹介します。具体的には RxExample にある MVVM (Model-View-ViewModel) を真似たアーキテクチャで陥りがちな Fat ViewModel へ対処する方法の解説になっています。 なお、この記事の想定読者は RxExample の初級者〜上級者ですが、それぞれの方向けにこの記事の読み方を説明します。 初級者の方へ 登場するコードは、コメントだけ拾い読みしても内容がわかるように配慮しています。コードを深く追うと疲れてしまうと思うので、コード内のコメントの内容を追ってください。 上級者の方へ この記事では、RxExample 上級者が疑問を感じるであろうコードに「上級者向け注釈」をつけています。記事末に注釈の解説がありますので、そちらをご覧くだ

    RxExample MVVM のその先へ(Fat ViewModel の倒し方) - Qiita
  • RxSwiftの機能カタログ - Qiita

    はじめに 既に RxSwift が使えるようになった人のために、RxSwift が用意しているクラスやメソッドのカタログをつくってみました。 RxSwift の使い方を覚えたい人は、先に オブザーバーパターンから始めるRxSwift入門 RxSwift入門(2) 非同期処理してみる RxSwiftを深く理解する を読んでください。 また Rx を使った設計については「 Rxを使った設計をビジュアル化する」を参考にしてください。 ここの機能カタログは RxSwift 2.6.0 を元に作成しました1。対応するソースコードを追いやすいように、見出しをフォルダ階層やファイル名と一致させています。public として公開されているものだけが対象です。 また RxSwift 独自の機能でないものは、できるだけReactiveX の解説へのリンクを載せています。英語ですがマーブルダイアグラム(R

    RxSwiftの機能カタログ - Qiita
  • RxSwiftを使ってアプリを作ってみて、よく使った書き方 - Qiita

    ※追記(16/10/25) RxSwiftが3.0.0になりfunction名が一部変更されました。この記事はRxSwift2.xのfunction名で書かれているのでご注意ください。(コピペしても使えない点以外は、問題ないと思います。) https://github.com/ReactiveX/RxSwift/blob/master/CHANGELOG.md 複数の非同期処理を直列に実行したい concatを使うことで簡潔に書けます。 [rx_hoge, rx_fuga].concat() .subscribe( onNext: nil, onError: { (error) -> Void in // いずれかのタスクでonError()された場合に呼ばれる(その後のタスクは実行されなくなる) }, onCompleted: { () -> Void in // 全てのタスクがonCo

    RxSwiftを使ってアプリを作ってみて、よく使った書き方 - Qiita
  • RxCocoaが提供するDriverって何? - Qiita

    はじめに 今まで以下の RxSwift に関する記事を書いてきました。 オブザーバーパターンから始めるRxSwift入門 RxSwift入門(2) 非同期処理してみる RxSwiftを深く理解する RxSwiftの機能カタログ Rxを使った設計をビジュアル化する この中で RxCcoca が提供している Driver を説明してこなかったので、ここで説明しようと思います。 公式の解説 では Driver だけでなく ControlProperty, ControlEvent も含めて Units と呼んで説明されています。これらは RxCocoa で提供されていて、Rx に一般的なものではなく RxSwift 独自のものです。 RxSwift のバージョンは 3.0.1 です。 UI層とのバインドで必要なこと iOS では UI 部品の更新はメインスレッドで行う必要があります。例えば MV

    RxCocoaが提供するDriverって何? - Qiita
  • RxSwift CombineLatestで3つのvalueを監視する - Qiita

    背景 三つのTextFieldの値を監視して、全てに文字の記入などがあれば、navigationbarのBarButtonのisEnabledのStatusをtrueに変更するということをやりたいと考えました。そこで、 combinelatestを使おうと思ったのですが、3つのobservableな値を監視して、結果を返すようなexmpleがあまり見つかりませんでした。 開発環境 Swift 4.2 ~ RxSwift 4.2 ~ 方法 ViewModel import RxSwift class ViewModel { let name = Varible<String>("") let userID = Varible<String>("") let userPassword = Varible<String>("") let shouldSubmit: Observable<Bool

    RxSwift CombineLatestで3つのvalueを監視する - Qiita
  • Combineフレームワーク と RxSwift その1 - Qiita

    Combineフレームワークとは 先日のWWDCで発表されたSwiftUIのインパクトはすごかったですが、それと一緒に導入されたCombineフレームワークも個人的には衝撃でした! Appleの更新ページでは下記のように説明されています。 The Combine framework provides a declarative Swift API for processing values over time. These values can represent user interface events, network responses, scheduled events, and many other kinds of asynchronous data. Combine declares publishers to expose values that can change o

    Combineフレームワーク と RxSwift その1 - Qiita
  • 1