用于将 Single<[Element]> 转换为 Observable<Element> 的 rxSwift 扩展
Posted
技术标签:
【中文标题】用于将 Single<[Element]> 转换为 Observable<Element> 的 rxSwift 扩展【英文标题】:rxSwift extension for converting Single<[Element]> to Observable<Element> 【发布时间】:2018-12-04 19:56:08 【问题描述】:我很难创建一个将单个数组转换为 Observable 的扩展。例如,我有一个Single<[Address]>
,我想将其转换为Observable<Address>
。
每次我想这样做时我必须编写的代码是
mySingleVariable.asObservable().flatMap( addresses in Observable.from(addresses) )
这个操作很常见,代码也很冗长。我创建扩展的尝试如下所示
extension PrimitiveSequence where Trait == SingleTrait
func flatObservable<R: Collection>() -> Observable<R.Element>
return asObservable().flatMap( element in Observable.from(element) )
不幸的是,上面的代码不起作用。我得到的错误是“函数签名中未使用通用参数'R'”。这是因为函数返回Observable<R.Element>
。如果返回Observable<R>
,错误就会消失,但这不是我想要达到的结果。
【问题讨论】:
【参考方案1】:试试这个:
extension PrimitiveSequence where Trait == SingleTrait, Element: Sequence
func flatObservable<R>() -> Observable<R> where R == Element.Element
return asObservable().flatMap Observable.from($0)
【讨论】:
谢谢,它运行良好。你对我应该如何命名这个函数有什么建议吗?你觉得“flatObservable”合适吗?以上是关于用于将 Single<[Element]> 转换为 Observable<Element> 的 rxSwift 扩展的主要内容,如果未能解决你的问题,请参考以下文章
540. Single Element in a Sorted Array
540. Single Element in a Sorted Array
540. Single Element in a Sorted Array
540. Single Element in a Sorted Array