【问题标题】:rxSwift extension for converting Single<[Element]> to Observable<Element>用于将 Single<[Element]> 转换为 Observable<Element> 的 rxSwift 扩展
【发布时间】:2018-12-04 19:56:08
【问题描述】:

我很难创建一个将单个数组转换为 Observable 的扩展。例如,我有一个Single&lt;[Address]&gt;,我想将其转换为Observable&lt;Address&gt;

每次我想这样做时我必须编写的代码是

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&lt;R.Element&gt;。如果返回Observable&lt;R&gt;,错误就会消失,但这不是我想要达到的结果。

【问题讨论】:

    标签: ios arrays swift observable rx-swift


    【解决方案1】:

    试试这个:

    extension PrimitiveSequence where Trait == SingleTrait, Element: Sequence {
    
        func flatObservable<R>() -> Observable<R> where R == Element.Element {
            return asObservable().flatMap { Observable.from($0) }
        }
    }
    

    【讨论】:

    • 谢谢,它运行良好。你对我应该如何命名这个函数有什么建议吗?你觉得“flatObservable”合适吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多