AnyObserver
AnyObserver 可以用来描叙任意一种观察者。
例如:
打印网络请求结果:
1. URLSession.shared.rx.data(request: URLRequest(url: url))
2. .subscribe(onNext: { data in
3. print("Data Task Success with count: \(data.count)")
4. }, onError: { error in
5. print("Data Task Error: \(error)")
6. })
7. .disposed(by: disposeBag)
可以看作是:
1. let observer: AnyObserver<Data> = AnyObserver { (event) in
2. switch event {
3. case .next(let data):
4. print("Data Task Success with count: \(data.count)")
5. case .error(let error):
6. print("Data Task Error: \(error)")
7. default:
8. break
9. }
10. }
12. URLSession.shared.rx.data(request: URLRequest(url: url))
13. .subscribe(observer)
14. .disposed(by: disposeBag)
用户名提示语是否隐藏:
1. usernameValid
2. .bind(to: usernameValidOutlet.rx.isHidden)
3. .disposed(by: disposeBag)
可以看作是:
1. let observer: AnyObserver<Bool> = AnyObserver { [weak self] (event) in
2. switch event {
3. case .next(let isHidden):
4. self?.usernameValidOutlet.isHidden = isHidden
5. default:
6. break
7. }
8. }
10. usernameValid
11. .bind(to: observer)
12. .disposed(by: disposeBag)
下一节将介绍 Binder 以及 usernameValidOutlet.rx.isHidden 的由来。
