【发布时间】:2019-10-13 14:20:30
【问题描述】:
如何将某个元素的数组发布者转换为该元素的发布者(但有更多事件)?
例如如何转换
AnyPublisher<[Int], Never> 到 AnyPublisher<Int, Never>?
我认为 RxSwift 提供的 from operator 可能与我想做的类似。
我想我想要组合 collect 的逆?
【问题讨论】:
如何将某个元素的数组发布者转换为该元素的发布者(但有更多事件)?
例如如何转换
AnyPublisher<[Int], Never> 到 AnyPublisher<Int, Never>?
我认为 RxSwift 提供的 from operator 可能与我想做的类似。
我想我想要组合 collect 的逆?
【问题讨论】:
代码如下:
func example(publisher: AnyPublisher<[Foo], Never>) -> AnyPublisher<Foo, Never> {
return publisher
.map { $0.publisher }
.switchToLatest()
.eraseToAnyPublisher()
}
【讨论】:
.flatMap { $0.publisher } 与 .map { $0.publisher }.switchToLatest() 相比如何?也许后者是大多数情况下想要的?还是它们完全等效?
您可能想要做的是在Foo 数组的发布者上使用FlatMap,使用一个函数将Foo 数组转换为Foo 的Observable(这是from进来)。
.flatMap { $0.publisher }
【讨论】: