Swift联合收割机:如何转换'AnyPublisher<;[Foo],*>;`致“AnyPublisher<;Foo,*>;`?
如何将某个元素的发布者转换为该元素的发布者(但具有更多事件) e、 我怎样才能转换Swift联合收割机:如何转换'AnyPublisher<;[Foo],*>;`致“AnyPublisher<;Foo,*>;`?,swift,rx-swift,combine,Swift,Rx Swift,Combine,如何将某个元素的发布者转换为该元素的发布者(但具有更多事件) e、 我怎样才能转换 AnyPublisher到AnyPublisher 我想也许RxSwift提供的its与我想做的类似 我想我想要的是联合收割机的倒数?你可能想做的是在Foo数组的发布者上使用FlatMap,使用一个函数将Foo数组转换为Foo的可观察的(这就是来自的地方) 代码如下: func example(publisher: AnyPublisher<[Foo], Never>) -> AnyPublis
AnyPublisher
到AnyPublisher
我想也许RxSwift提供的its与我想做的类似
我想我想要的是联合收割机的倒数?你可能想做的是在
Foo
数组的发布者上使用FlatMap
,使用一个函数将Foo
数组转换为Foo
的可观察的(这就是来自的地方)
代码如下:
func example(publisher: AnyPublisher<[Foo], Never>) -> AnyPublisher<Foo, Never> {
return publisher
.map { $0.publisher }
.switchToLatest()
.eraseToAnyPublisher()
}
func示例(发布者:AnyPublisher)->AnyPublisher{
返回发布者
.map{$0.publisher}
.switchToLatest()
.删除任何发布者()
}
这是正确的答案,但如果提供示例代码就更好了。我是基于对Rx API的了解和对Github上项目的粗略概述(源代码)推导出来的。。。我自己不是一个敏捷的程序员;).flatMap{$0.publisher}
与.map{$0.publisher}.switchToLatest()相比如何?也许在大多数情况下,后者才是人们想要的?或者它们是完全等价的?它们不是等价的。如果下游订阅服务器限制发布服务器,则可能会出现问题。接得好。
func example(publisher: AnyPublisher<[Foo], Never>) -> AnyPublisher<Foo, Never> {
return publisher
.map { $0.publisher }
.switchToLatest()
.eraseToAnyPublisher()
}