回答編集履歴

1

改善案の修正

2019/06/19 08:13

投稿

kakajika
kakajika

スコア3131

test CHANGED
@@ -8,26 +8,30 @@
8
8
 
9
9
  ```swift
10
10
 
11
- isEnableButton = Observable.combineLatest(
11
+ validatedItem = itemLabelObservable
12
12
 
13
- validatedItem,
13
+ .flatMapLatest { (input) -> Observable<Bool> in
14
14
 
15
- validatedDetail,
15
+ return validation
16
16
 
17
- validatedTag
17
+ .validate(text: input)
18
18
 
19
- ) {
19
+ .catchErrorJustReturn(false) // 後続の処理にエラーを流さないために、ここでcatchします
20
20
 
21
- $0 && $1 && $2
21
+ }
22
22
 
23
- }
23
+ .share()
24
24
 
25
- .catchErrorJustReturn(false)
26
25
 
26
+
27
- .share()
27
+ // 以下同様...
28
28
 
29
29
  ```
30
30
 
31
31
 
32
32
 
33
+ ※本件とは関係ないですが、itemLabelObservableに流れてきた最新の値についてのみバリデーションを行えばいいはずなので、flatMapではなくflatMapLatestの方を使うべきかと思います。
34
+
35
+
36
+
33
37
  また、このようなミスを防ぐ手段として、DriverやRelayといったものがRxCocoaには用意されています。これらの使用も検討してみると良いかもしれません。