Метод экземпляра 'flatMap' требует, чтобы 'String' соответствовала 'ObservableConvertibleType'
Я получаю ошибку сборки ниже для RxSwift
,
func testFlatMap() {
let bag = DisposeBag()
let subject = PublishSubject<String>.init()
subject.flatMap({ (value) -> String in
PublishSubject.just(value)
}).subscribe(
onNext: { value in
print(value)
}
).disposed(by: bag)
subject.on(.next("Test"))
}
Метод экземпляра 'flatMap' требует, чтобы 'String' соответствовала 'ObservableConvertibleType'
Что мне не хватает?
1 ответ
Решение
Это проблема:
subject.flatMap({ (value) -> String in
PublishSubject.just(value)
})
В первой строке вы сообщаете компилятору, что замыкание возвращает String
но flatMap
требует, чтобы замыкание возвращало наблюдаемый тип.
Кроме того, к вашему сведению: a.flatMap { .just($0) }
фактически не работает. Другими словами:a
≣ a.flatMap { .just($0) }