Swift Combine:如何将`AnyPublisher <[Foo],*>`转换为`AnyPublisher <Foo,*>`?

时间:2019-10-13 14:20:30

标签: swift rx-swift combine

如何将某个元素的数组发布者转换为该元素的发布者(但具有更多事件)?

例如我该如何转换

AnyPublisher<[Int], Never>AnyPublisher<Int, Never>

我认为RxSwift的from operator提供的功能可能与我想要的功能类似。

我想我想结合collect的倒数?

2 个答案:

答案 0 :(得分:3)

代码如下:

func example(publisher: AnyPublisher<[Foo], Never>) -> AnyPublisher<Foo, Never> {
    return publisher
        .map { $0.publisher }
        .switchToLatest()
        .eraseToAnyPublisher()
}

答案 1 :(得分:1)

您可能想做的是在FlatMap数组的发布者上使用Foo,并使用将Foo数组转换为Observable的函数。 Foo(即from的来源)。