Я использую оператор RxSwift zip
для объединения Observable
элементов. Я хочу объединить более 8 (максимум поддерживается в настоящее время). Есть ли в RxSwift оператор zip
, аналогичный RxJava? - Документация по оператору RxJava Zip
RXSwift Zip оператор N элементов через перечислимое
comment
Итак, ответ ниже удовлетворил ваш вопрос? Я не уверен, почему вы не приняли его.
- person solidcell   schedule 14.08.2016
Ответы (1)
Он может обрабатывать более 8, если вы используете его на CollectionType
.
extension CollectionType where Generator.Element : ObservableType {
public func zip<R>(resultSelector: [Generator.Element.E] throws -> R) -> Observable<R> {
return ZipCollectionType(sources: self, resultSelector: resultSelector)
}
}
Поэтому вместо того, чтобы использовать его следующим образом:
Observable.zip(o1, o2, o3, o4, o5, o6, o7, o8, o9) { ... }
Используйте это так:
[o1, o2, o3, o4, o5, o6, o7, o8, o9].zip { ... }
person
solidcell
schedule
04.08.2016
Интересно, а есть ли побочные эффекты?
- person Graham Smith; 04.08.2016
Никаких побочных эффектов. Он ведет себя как
Observable.zip
.
- person solidcell; 04.08.2016
Если я правильно понимаю, он обрабатывает коллекцию как набор исходных наблюдаемых, а затем заархивирует их по мере их испускания? Это правильно?
- person Graham Smith; 04.08.2016
Этот ответ не компилируется с Swift 3.1 и RxSwift 3.4.1. не могли бы вы обновить его?
- person matt.writes.code; 15.06.2017
Вышеприведенное больше не компилируется с Xcode 12. Кто-нибудь еще сталкивался с этой проблемой?
- person klmitchell2; 14.10.2020