sergdort / CleanArchitectureRxSwift

Example of Clean Architecture of iOS app using RxSwift
MIT License
3.88k stars 494 forks source link

Issue when using network call in Realm Repository #49

Closed selfishout closed 5 years ago

selfishout commented 5 years ago

Hi there I'm trying to change one UseCase Repository to first fetching data from realm and getting data from network and update the realm. something like that :

final class NewsUseCase: Domain.NewsUseCase where Repository: AbstractRepository, Repository.T == News {

private let network: NewsNetwork
private let repository: Repository

init(repository: Repository, network: NewsNetwork) {
    self.repository = repository
    self.network = network
}

func news() -> Observable<[News]> {

    let fetchNews = repository.queryAll().asObservable()
    let stored = network.fetchNews()
        .flatMap {
            return self.repository.save(entity: News)
                .asObservable()
                .map(to: [News].self)
                .concat(Observable.just($0))
    }

    return fetchNews

    but there have been couple of errors in there. for example in saving to repository I've got error like this : 

Cannot convert value of type 'News.Type' to expected argument type 'News'

could me help me and fix this snippet code for me. Thanks

sergdort commented 5 years ago

Hi, @selfishout

There is Networking platform example, but it uses NSCoding to cache response, though it should be pretty similar if you swap it with Realm