ReactiveSwiftを触ってみる
textField.rx.text .bind(to: label.rx.text) .disposed(by: bag) textField.rx.text.asDriver() .drive(label.rx.text) .disposed(by: bag)
label.reactive.text <~ textField.reactive.continuousTextValues
map: do { let (signal, observer) = Signal<String, NoError>.pipe() signal .map { $0.uppercased() } .observeValues { print($0) } observer.send(value: "a") // Prints A observer.send(value: "b") // Prints B observer.send(value: "c") // Prints C } filter: do { let (signal, observer) = Signal<Int, NoError>.pipe() signal .filter { $0 % 2 == 0 } .observeValues { print($0) } observer.send(value: 1) // Not printed observer.send(value: 2) // Prints 2 observer.send(value: 3) // Not printed observer.send(value: 4) // prints 4 } reduce: do { let (signal, observer) = Signal<Int, NoError>.pipe() signal .reduce(1) { $0 * $1 } .observeValues { print($0) } observer.send(value: 1) // nothing printed observer.send(value: 2) // nothing printed observer.send(value: 3) // nothing printed observer.sendCompleted() // prints 6 }
https://github.com/ReactiveCocoa/ReactiveSwift/blob/master/Documentation/BasicOperators.md