[iOS]-RxSWIFT入門(4)
RxCocoa
今回のリリースでは、RxCocoaを使用したログインシステムについて説明します.
UIは次のように構成されています.
Email、Password TextField、および
異なる形式のEメール、Password Valid View(赤点)
そして最後.
Emailとpasswordのフォーマットが同じ場合、Loginが表示されます.
またはFill the Fieldsに表示されるログインボタンです.
コード#コード#
idField.rx.text.orEmpty
.map(checkEmailValid)
.subscribe(onNext: { s in
self.idValidView.isHidden = s
})
.disposed(by: disposeBag)
idField形式のコードを確認します.もちろん「非同期」で実現します.
実際、今回の講座を聞く前に、動機や非同期について多くの話を聞いたことがありますが、実際のアプリケーションでの応用方法に疑問があります.今回は少し緩和されたようです.
idField.rx.text:idFieldのtextが非同期で処理するコード.
.orEmpty:filter{$0!=nil}とmap{$0!}と同じコードです.外来処置
checkEmailValid関数は単独で記述されています.
簡単に.contain("@"), .contain(".")で...
subscribeで表示される値は、
Bool形式で表示される値self.isValidView.isHiddenに適用すると、
idFieldのtextは変更するたびに非同期です!sが変化していることがわかる.
Q.Delegateとの差が少ない…?
コード作成、特にTextFieldではDelegateによく似ていると思います.RxSWIFT、RxCocoaを使用して上記のコードを記述しない場合は、先にViewControllerでUItextfieldDelegateを拡張してから、TextfieldEndEditingでコードを記述することができます.
そこでグーグルを試してみると
Delegateで非同期処理を行うそうです.
思えばCollectionViewとTable ViewもDelegateで非同期処理を行っていた.Table View関数またはCollectionView関数の関数は自動的に処理されます.
私がデータベースとして使用しているFirebaseで使用しているObserverやObserverSingleEvent関数は、最後に考えると非同期処理をしていると思います.
Combine
idFieldの非同期処理コードが見られると,pwFieldの非同期処理を手間なく行うことができる.
idField.rx.text.orEmpty
.map(checkEmailValid)
.subscribe(onNext: { s in
self.idValidView.isHidden = s
})
.disposed(by: disposeBag)
pwField.rx.text.orEmpty
.map(checkPasswordValid)
.subscribe(onNext: { s in
self.pwValidView.isHidden = s
})
.disposed(by: disposeBag)
では、今から登録ボタンを考えてみましょう.上記2つの観測可能な項目がtrueの場合、Loginを表示します.
コードを表示します.
Observable.combineLatest(
idField.rx.text.orEmpty.map(checkEmailValid),
pwField.rx.text.orEmpty.map(checkPasswordValid),
resultSelector: { s1, s2 in s1 && s2 }
)
.subscribe(onNext: { b in
self.loginButton.isEnabled = b
})
.disposed(by: disposeBag)
2人の傍観者を発表した後、戻りセレクタで購読すればいいです.今回はやっぱりselfloginButton.isEnabledに適用します.
非同期で、値を変更するたびにDelegateのように変更されたLoginボタンを表示できます.
では、これまで学んだコードをより簡単に使用する方法について説明します.
Simple
まず、idを作成してtextfieldの観測性を作成します.
名前はidInputOb idFieldrxを打って、
戻り値はReactive形式で表示されます.おもしろい
text入力後、ControlProperty、
コントロールするオブジェクトのようです.
observableがほしいのでasobservable()を入力します.
そして赤い点にも傍観者バブルを作ります.
パスワードも完了しました.
作成した観察可能なサブスクリプションを彼らに渡しましょう.
これはisHiddenに適用されます
2人の傍観者Bubbleを組み合わせて、ログインボタンに貼り付けます.
これは先ほど書いたコードと同じ非同期処理を行うコードになります.
確かに、より多くの観測性を含むコードでは、より分かりやすい.
Reference
この問題について([iOS]-RxSWIFT入門(4)), 我々は、より多くの情報をここで見つけました https://velog.io/@app_shawn/iOS-RxSwift-입문-4テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol