如何更改返回方法上的可观察类型



>我是RxSwift中的新功能,这就是我想要实现的目标,希望你们能帮助我。

我有一个可观察量,它将我的信息与服务器同步并缓存响应并返回可观察量(成功或失败(,我想做的是一旦我有了这个成功的代码......去获取缓存中的信息,但我不断得到的错误是

无法将类型"(_( -> 可观察"的值转换为预期的参数类型"((布尔值(抛出 -> Void

我知道这是因为我的同步方法返回一个布尔值,但我不知道如何在同步发生后触发缓存拉取信息。

这是我使用的代码...

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!
})
}

感谢您的阅读...我希望你们能帮助我。

你应该在这里使用flatMap(_:)而不是do(onNext:)

但是代码在您订阅之前不会执行,因此请记住这一点。

最新更新