RxSwift 如何附加到 BehaviorSubject<[]>
RxSwift how to append to BehaviorSubject<[]>
由于 RxSwift 4 中弃用了 Variable,BehaviorSubject
执行以下操作的等效方法是什么?
let observable = Variable<[Int]>([])
observable.value.append(1)
BehaviorRelay 是新版本 Variable 的替代品 RxSwift,这似乎有效相似地。 Variable 有一个 属性 value,它在更改时发出事件。与BehaviorRelay类似,可以使用底层accept(:),方法改变值。
let array = BehaviorRelay(value: [1, 2, 3])
array.subscribe(onNext: { value in
print(value)
}).disposed(by: disposeBag)
// for changing the value, simply get current value and append new value to it
array.accept(array.value + [4])
尽管如此,如果您愿意,也可以使用 BeviourSubject 进行处理,
let subject = BehaviorSubject(value: [10, 20])
subject.asObserver().subscribe(onNext: { value in
print(value)
}).disposed(by: disposeBag)
您可以使用抛出函数 value() 从 BehaviorSubject 获取最新值,因此附加值看起来像这样,
do {
try subject.onNext(subject.value() + [40]) // concatenating older value with new
} catch {
print(error)
}
请注意,您需要调用 onNext 将新值传递给 BehaviorSubject,这不像使用 Variable 或BahaviorRelay
我们还可以使用 BehaviorRelay
扩展来轻松附加对象:
extension BehaviorRelay where Element: RangeReplaceableCollection {
func add(element: Element.Element) {
var array = self.value
array.append(element)
self.accept(array)
}
}
用法:
self.wishList.add(element: item.element)
wishList 是 BehaviorRelay
的对象
由于 RxSwift 4 中弃用了 Variable,BehaviorSubject
执行以下操作的等效方法是什么?
let observable = Variable<[Int]>([])
observable.value.append(1)
BehaviorRelay 是新版本 Variable 的替代品 RxSwift,这似乎有效相似地。 Variable 有一个 属性 value,它在更改时发出事件。与BehaviorRelay类似,可以使用底层accept(:),方法改变值。
let array = BehaviorRelay(value: [1, 2, 3])
array.subscribe(onNext: { value in
print(value)
}).disposed(by: disposeBag)
// for changing the value, simply get current value and append new value to it
array.accept(array.value + [4])
尽管如此,如果您愿意,也可以使用 BeviourSubject 进行处理,
let subject = BehaviorSubject(value: [10, 20])
subject.asObserver().subscribe(onNext: { value in
print(value)
}).disposed(by: disposeBag)
您可以使用抛出函数 value() 从 BehaviorSubject 获取最新值,因此附加值看起来像这样,
do {
try subject.onNext(subject.value() + [40]) // concatenating older value with new
} catch {
print(error)
}
请注意,您需要调用 onNext 将新值传递给 BehaviorSubject,这不像使用 Variable 或BahaviorRelay
我们还可以使用 BehaviorRelay
扩展来轻松附加对象:
extension BehaviorRelay where Element: RangeReplaceableCollection {
func add(element: Element.Element) {
var array = self.value
array.append(element)
self.accept(array)
}
}
用法:
self.wishList.add(element: item.element)
wishList 是 BehaviorRelay