【问题标题】:How do I change observable type on my return method如何更改我的返回方法上的可观察类型
【发布时间】:2020-06-18 19:55:35
【问题描述】:

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

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

无法将 '(_) -> Observable' 类型的值转换为预期的参数类型 '((Bool) throws -> 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!
            })
}

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

【问题讨论】:

    标签: ios swift reactive-programming rx-swift


    【解决方案1】:

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

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

    【讨论】:

    • 我花了一点时间才弄清楚如何让它工作,但它确实做到了,非常感谢
    猜你喜欢
    • 2016-05-03
    • 1970-01-01
    • 2018-12-30
    • 1970-01-01
    • 2016-09-13
    • 1970-01-01
    • 2021-03-04
    • 1970-01-01
    • 2017-06-20
    相关资源
    最近更新 更多