Skip to content

Instantly share code, notes, and snippets.

@keremk
Last active January 12, 2020 10:41
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save keremk/6f3a07ff0bbca6a425c17dc8b8b9e1ec to your computer and use it in GitHub Desktop.
Save keremk/6f3a07ff0bbca6a425c17dc8b8b9e1ec to your computer and use it in GitHub Desktop.
import Foundation
import Combine
final class MovieCollection: ObservableObject {
@Published var movieResponse: MovieResponse? = nil
...
func fetchMovies() -> [Movie] {
let response: MovieResponse? = fetchPreviewData(previewFile: "movies.json", fetcher: fetchResponse)
return response?.results ?? []
}
private func fetchResponse() -> MovieResponse? {
if movieResponse != nil {
return movieResponse
}
moviesFetchable?.fetchMovies()
.replaceError(with: MovieResponse.empty())
.sink(receiveValue: { [weak self] movieResponse in
self?.movieResponse = movieResponse
})
.store(in: &disposables)
return movieResponse
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment