簡體   English   中英

如何在RxSwift中初始化一個可觀察的屬性?

[英]How do I initialize an observable property in RxSwift?

我覺得這很令人費解。 來自ReactiveCocoa我希望這樣的事情可能。

在此輸入圖像描述

如何將RxSwift observable初始化為5?

您可以通過多種方式創建流:

主要方式

    Observable<Int>.create { observer -> Disposable in

        // Send events through observer
        observer.onNext(3)
        observer.onError(NSError(domain: "", code: 1, userInfo: nil))
        observer.onCompleted()

        return Disposables.create {
            // Clean up when stream is deallocated
        }
    }

快捷鍵

    Observable<Int>.empty() // Completes straight away
    Observable<Int>.never() // Never gets any event into the stream, waits forever
    Observable<Int>.just(1) // Emit value "1" and completes

通過主題 (ReactiveSwift中的Property / MutableProperty

Variable在RxSwift 4中已棄用,但它只是BehaviourSubject的一個包裝器,因此您可以使用它。

有2個最常用的科目

BehaviorSubject - 它將發出當前值和即將發布的值。 因為它將發出當前值,所以需要使用值BehaviorSubject<Int>(value: 0)初始化它

PublishSubject - 它將發出即將到來的值。 初始化PublishSubject<Int>()不需要初始值

然后你可以在主題實例上調用.asObservable()來獲得一個observable。

我現在無法測試它,但不會Observable.just是你正在尋找的功能?

Observable創建的源代碼: github鏈接

當然,如果您打算修改它,也可以使用Variable(5)

當我正在學習RxSwift時,我跑了這個帖子。 您可以初始化一個可觀察的屬性,如下所示:

var age = Variable<Int>(5)

並將其設置為可觀察的:

let disposeBag = DisposeBag()

private func setupAgeObserver() {
    age.asObservable()
      .subscribe(onNext: {
        years in
        print ("age is \(years)")
        // do something
      })
      .addDisposableTo(disposeBag)
 }

在RxSwift中,不推薦使用Variable 使用BehaviorRelayBehaviorSubject

在Rx中,通常有一個BehaviorSubject存儲最后一個值

特別是在RxSwift中,還有Variable,它是BehaviorSubject的包裝器

在這里看到兩者的描述 - https://github.com/ReactiveX/RxSwift/blob/master/Documentation/GettingStarted.md

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM