Расширение rxSwift для преобразования Single <[Element]> в Observable <Element> - PullRequest
0 голосов
/ 04 декабря 2018

Мне очень трудно пытаться создать расширение, которое преобразует отдельный массив в 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 Ответ

0 голосов
/ 05 декабря 2018

Попробуйте это:

extension PrimitiveSequence where Trait == SingleTrait, Element: Sequence {

    func flatObservable<R>() -> Observable<R> where R == Element.Element {
        return asObservable().flatMap { Observable.from($0) }
    }
}
...