代码之家  ›  专栏  ›  技术社区  ›  andrei

rxSwift扩展,用于将单个<[元素]>转换为可观察<元素>

  •  0
  • andrei  · 技术社区  · 7 年前

    我正在努力创建一个扩展,将单个数组转换为可观测数组。例如,我有一个 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) })
        }
    }
    

    Observable<R.Element> . 如果它回来 Observable<R> ,错误会消失,但这不是我想要达到的结果。

    1 回复  |  直到 7 年前
        1
  •  4
  •   Daniel T.    7 年前

    试试这个:

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