Използвам оператора zip
на RxSwift, за да комбинирам 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