Я загружаю список книг из API и для каждой книги хочу скачать обложку.
Я застрял с тем, что я думаю, что это очень простая и распространенная задача в Rx. Я провел исследование, но не могу найти решение, потому что все связанные с этим вопросы касаются того, как вернуть еще один Observable
; например, получить репозитории Github, а затем получить проблемы для каждого из них, но возвращая Observable<Issue>
, а не измененный Observable<Repository>
, это мой случай. В моем случае я хочу изменить предыдущий наблюдаемый результат (Observable<[Book]>
) с результатом другого запроса, возвращающего другой наблюдаемый (Observable<Data>
).
Пока у меня есть первая часть, качайте книги:
func search(query: String) -> Observable<[Book]> {
return networkSession.rx
.data(request: URLRequest(url: url))
.map({ try JSONDecoder().decode([Book].self, from: $0) })
}
Book
— это простая структура:
struct Book {
let title: String
let authors: [String]
let coverImageURL: URL
var coverImage: Data?
}
После этого я могу загрузить каждое изображение, но я не знаю, как назначить его каждому объекту, чтобы вернуть один и тот же тип Observable<[Book]>
, не связываясь с вложенными наблюдаемыми и миллионом ошибок времени компиляции. Я почти уверен, что это обычный сценарий использования flatMap
, но он все еще неясен для меня.
Большое спасибо!