如何将值附加到 RxSwift 中观察到的数组
How do I append values fo an observed array in RxSwift
试图掌握 RxSwift
并卡在一些事情上。
var observedData = BehaviorSubject.from([2, 3, 4, 5, 6])
.map({[=10=]*3}).subscribe(onNext: {
print("HELLO", [=10=])
})
如何 append
数组的额外值,以便再次触发 subscription
?
我尝试了 observedData.onNext
和 observedData.accept
但它们不起作用。
我也想知道
的区别
var observedData = BehaviorSubject.from([2, 3, 4, 5, 6])
和
var observedData2 = BehaviorSubject<[Int]>(value: [2, 3, 4, 5, 6])
我一开始以为是写同一件事的不同方式,但我不能在 observedData2
上使用 .map
类似的东西应该可以工作:
let subject = BehaviorSubject<[Int]>(value: [2, 3, 4, 5, 6])
subject.asObservable().map({[=10=].map({[=10=]*3})}).subscribe(onNext: { print("HELLO", [=10=]) }).disposed(by: disposeBag)
if var value = try? subject.value() {
value.append(1)
subject.on(.next(value))
}
连同@EtienneJézéquel 给出的答案...
public static func ObservableType.from(_:)
函数returns一个Observable,而BehaviorSubject.init(value:)
创建一个BehaviorSubject,然后必须先将其转换为Observable,然后才能map(_:)
它。
此外,当您意识到您没有附加到 BehaviorSubject 包含的数组,而是使用它发出一个 new 数组时,可能有助于更好地理解。这就是为什么 Etienne 的代码首先使用 value() throws
从主题中复制当前数组并附加到副本,然后使用 onNext(_:)
.
将新数组推送到主题中
最后,不要让主题 var
s 它们应该始终是 let
s 因为你不想在设置它们的链后重新安置它们。
试图掌握 RxSwift
并卡在一些事情上。
var observedData = BehaviorSubject.from([2, 3, 4, 5, 6])
.map({[=10=]*3}).subscribe(onNext: {
print("HELLO", [=10=])
})
如何 append
数组的额外值,以便再次触发 subscription
?
我尝试了 observedData.onNext
和 observedData.accept
但它们不起作用。
我也想知道
的区别var observedData = BehaviorSubject.from([2, 3, 4, 5, 6])
和
var observedData2 = BehaviorSubject<[Int]>(value: [2, 3, 4, 5, 6])
我一开始以为是写同一件事的不同方式,但我不能在 observedData2
.map
类似的东西应该可以工作:
let subject = BehaviorSubject<[Int]>(value: [2, 3, 4, 5, 6])
subject.asObservable().map({[=10=].map({[=10=]*3})}).subscribe(onNext: { print("HELLO", [=10=]) }).disposed(by: disposeBag)
if var value = try? subject.value() {
value.append(1)
subject.on(.next(value))
}
连同@EtienneJézéquel 给出的答案...
public static func ObservableType.from(_:)
函数returns一个Observable,而BehaviorSubject.init(value:)
创建一个BehaviorSubject,然后必须先将其转换为Observable,然后才能map(_:)
它。
此外,当您意识到您没有附加到 BehaviorSubject 包含的数组,而是使用它发出一个 new 数组时,可能有助于更好地理解。这就是为什么 Etienne 的代码首先使用 value() throws
从主题中复制当前数组并附加到副本,然后使用 onNext(_:)
.
最后,不要让主题 var
s 它们应该始终是 let
s 因为你不想在设置它们的链后重新安置它们。