Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift联合收割机:如何转换'AnyPublisher<;[Foo],*>;`致“AnyPublisher<;Foo,*>;`?_Swift_Rx Swift_Combine - Fatal编程技术网

Swift联合收割机:如何转换'AnyPublisher<;[Foo],*>;`致“AnyPublisher<;Foo,*>;`?

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

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

e、 我怎样才能转换

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()
}