У меня есть некоторый массив значений в моем коде, и я хотел бы передать его через последовательность методов Single и Completable:
let data: [DataClass]
func method1(_ data: DataClass) -> Single<DataClass2> { ... }
func method2(_ data2: DataClass2) -> DataClass3? { ... }
func method3(_ data3: DataClass3) -> Completable { ... }
Я пытаюсь сделать это с помощью этого кода:
func iNeededMethod() -> Completable {
return Completable.merge(
data
.flatMap { value -> Completable in
method1(value)
.map(method2)
.filter { $0 != nil }
.map { $0! }
.map(method3)
})
}
Но у меня не работает с ошибкой:
Cannot convert value of type 'PrimitiveSequence<MaybeTrait, Completable>' (aka 'PrimitiveSequence<MaybeTrait, PrimitiveSequence<CompletableTrait, Never>>') to closure result type 'Completable' (aka 'PrimitiveSequence<CompletableTrait, Never>')
Что я сделал не так?
method3 завершается. Я думаю, вы не можете использовать это в подобном .map. Вам нужно поместить это в flatMap или, может быть, в .andThen?





Ваше выражение лица кажется сложным для понимания. Вам и другим было бы легче понять, если бы вы разбили это на переменные. Каковы ваши данные, массив DataClass, что такое DataClass, это какой-то класс ObservableType или PrimitiveType?