Как изменить наблюдаемый тип в моем методе возврата - PullRequest
1 голос
/ 18 июня 2020

я новичок в RxSwift, и это то, чего я хочу достичь, надеюсь, вы, ребята, можете мне помочь.

У меня есть наблюдаемое, которое синхронизирует мою информацию с сервером, кэширует ответ и возвращает наблюдаемый (успешно или не удалось), что я хочу сделать, это как только у меня будет этот успешный код ... go и получить информацию, которая находится в кеше, но я продолжаю получать ошибку

Невозможно преобразовать значение типа '(_) -> Observable' в ожидаемый тип аргумента '((Bool) throws -> Void

Я знаю, что это из-за моего метода syn c возвращает bool , но я не знаю, как я могу вызвать информацию о извлечении кеша после того, как произошла синхронизация c.

Вот код, который я использую ...

private func fetchAndCacheMonthActivity(forDate date: Date) -> Observable<ActivityMonthInfo> {
        _activity.sync()
            .do(onNext: {[weak self] _ -> Observable<ActivityMonthInfo> in
                var cachedObs = self?._cacheMonthInfoObs[date.yearMonthString]

                guard cachedObs == nil else { return cachedObs! }

                cachedObs = _myActivitiesRepo.getMonthActivity(forMonthInDate: date)
                    .share(replay: 1, scope: SubjectLifetimeScope.forever)

                self?._cacheMonthInfoObs[date.yearMonthString] = cachedObs!

                return cachedObs!
            })
}

Спасибо за чтение ... Надеюсь, вы мне поможете.

1 Ответ

2 голосов
/ 19 июня 2020

Здесь следует использовать flatMap(_:), а не do(onNext:)

Но код не будет выполняться, пока вы не подпишетесь на него, так что имейте это в виду.

...