答案 0 :(得分:4)
您可以通过多种方式创建流:
主要方式
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()
以获得可观察的结果。
答案 1 :(得分:1)
答案 2 :(得分:1)
当我正在学习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)
}
答案 3 :(得分:1)
在RxSwift中Variable
已弃用。使用BehaviorRelay
或BehaviorSubject
答案 4 :(得分:0)
特别是在RxSwift中,还有Variable,它是BehaviorSubject
的包装器请参阅此处的说明 - https://github.com/ReactiveX/RxSwift/blob/master/Documentation/GettingStarted.md