2017-02-15 1 views
0

を働いていない私は3迅速Rxのスウィフトシンプルなタイマーが

let bag:DisposeBag = DisposeBag() 
var sig:Observable<Int>! 
sig = Observable<Int>.interval(1.0, scheduler: MainScheduler.instance) 

sig.subscribe(onNext: { (milsec) in 
    print("Mil: \(milsec)") 
}).addDisposableTo(bag) 

でこのRxSwiftコードを持っている私は、ボタンをタップすると、このコードを実行するが、そのコンソールには何も印刷されません。

答えて

3

DisposeBag範囲外になると、その契約は破棄されます。この例では、購読の呼び出しの直後に表示され、コンソールに何も印刷されていないことが表示されます。

disposeバッグの定義を、サブスクリプションを作成するクラスに移してください。すべて正常に動作するはずです。サイドノートでは

class MyViewController: UIViewController { 
    let bag:DisposeBag = DisposeBag() 

    dynamic func onButtonTapped() { 
    var sig:Observable<Int>! 
    sig = Observable<Int>.interval(1.0, scheduler: MainScheduler.instance) 

    sig.subscribe(onNext: { (sec) in 
     print("Sec: \(sec)") 
    }).addDisposableTo(bag) 
    } 
} 

intervalは、秒単位の間隔を予想し、そのミリ秒にoposedとしてそれだけですべての秒をチェックします。

+0

ありがとうございました。 –