2016-03-16 11 views
8

el bir etkinlik yayarlar.
Gözlemlenebilir olduğumu varsayın ve buna benzer şekilde abone olun.Ben RxSwift bir acemi olduğum ve çok temel bir ihtiyaç RxSwift

let source: Observable<Void> = Observable.create { [weak self] observer in 

     guard let _ = self else { 
      observer.on(.Completed) 
      return NopDisposable.instance 
     } 

     observer.on(.Next()) 

     return AnonymousDisposable { 

     } 
    } 

Ve böyle abone:

source.subscribeNext {() -> Void in 

    } 

soru şudur: el ihtiyacım her zaman subscribeNext etkinliği yayarlar nasıl. Bu UIButton'da rx_tap davranışı gibidir. Ben örnek kodda bakın
bu source = button.rx_tap.asObservale() gibi bir şey vardır. Bundan sonra, kullanıcı düğmeyi her tıkladığında, subscribeNext() üzerinde bir olay ve tetikleyici yayacaktır. Ayrıca, bu davranışa sahip olmak istiyorum, ancak UI olayından değil, program aracılığıyla.

cevap

11

Çoğu zaman, size gözlemlenebilir oluşturabilirsiniz ve ben vermek üzereyim çözüm Rx kodunu yapmak için önerilen yöntem değildir.

Sen istemek davranışı uygulamak için Subject bakabilirsiniz. Konuyla ilgili çok sayıda varyasyon var, belgelerin iyi açıkladığı. RxSwift en playground ilham

bir örnek kullanımı,:

let subject = PublishSubject<String>() 

_ = subject.subscribeNext { content in 
    print(content) 
} 
subject.on(.Next("a")) 
subject.on(.Next("b")) 

Bu "a" sonra "b" yazdırılır. konuyu kullanmak veya ben this article okumanızı öneririz değilken hakkında daha fazla ayrıntı için

.

+0

@tomahh Merhaba, Çözümün çalışır yapabilirsiniz. Bununla birlikte, 'önerilen yol' olarak bahsetmenin sebebi nedir? '' 'AnyObserver ' '' ile karşılaştırdığımızda yaklaşık nasıl. Ile
'' 'AnyObserver <>' '', bizim gibi kullanabilirsiniz:
'var beginLoad: AnyObserver ' 'beginLoad = AnyObserver (eventhandler: {(olay) -> baskı Void (" 1234543 ") })' 'beginLoad.on (.Next())' – user1066518

+0

Ayrıca '' 'PublishSubject ()' '' Gözlemlenebilir'' değil, bu yüzden operatörleri kullanamıyoruz üzerinde (yassı, concat ....). – user1066518

+1

Konuya 'asObservable()' diyerek 'Gözlenebilir' olarak tanımlayabilirsiniz. – tomahh

0

bir Sürücü için,

var isSearching: Driver<Bool> 

isSearching = Driver.just(true) 
İlgili konular