如何在 RxSwift 中初始化一个 observable 属性?

How do I initialize an observable property in RxSwift?

我觉得这很费解。来自 ReactiveCocoa 我希望有这样的可能。

如何将 RxSwift observable 初始化为 5?

我现在无法测试它,但是 Observable.just 不是您正在寻找的功能吗?

Observable 创建的来源:github link

当然,如果你想修改的话,也可以使用Variable(5)

在一般的Rx中,有一个BehaviorSubject用来存储最后一个值

特别是在 RxSwift 中,还有一个 Variable,它是 BehaviorSubject 的包装器

在此处查看两者的描述 - https://github.com/ReactiveX/RxSwift/blob/master/Documentation/GettingStarted.md

因为我正在学习 RxSwift,所以我 运行 关注了这个话题。你可以像这样初始化一个 observable 属性:

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

您可以通过多种方式创建流:

主要途径

    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

Through Subjects(在 ReactiveSwift 中又名 Property / MutableProperty

Variable 在 RxSwift 4 中被弃用,但它只是 BehaviourSubject 的包装器,所以你可以使用它。

有2个最常用的科目

BehaviorSubject - 它将发出当前值和即将到来的值。因为它会发出当前值,所以需要用值 BehaviorSubject<Int>(value: 0)

初始化

PublishSubject - 它将发出即将到来的值。初始化时不需要初始值 PublishSubject<Int>()

然后您可以在主题实例上调用 .asObservable() 以获取可观察对象。