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