我正在寻找另一种方法来处理可观察序列引发的错误。
我有一个数据库请求,该请求经常只是抛出DaoError.notFound(意味着未找到数据)。
然后,我正在执行将新数据保存到数据库的Remote API请求,这将导致CoreData通过第一个Observable序列发出新数据。但是,尽管使用RxCoreData,也不会发生。原因是第一个Observable终止于Error。
我可以使用:
catchErrorJustReturn([])但它发出元素的空数组并完成Observable序列,不会再通过此序列发出任何元素。
retry()但挂起重试,这也不是完美的解决方案,因为当没有元素时,我只想显示没有项目的空表视图。
完美的解决方案将以某种方式将错误或映射到空数组,但保持Observable流保持活动状态。但这不会发生。
最简单的解决方案是用返回的空数组替换DaoError.notFound,但是奇怪的是我无法保留错误,并且在某些情况下会创建无限流并忽略错误。
这听起来像是catchError(_:)
的工作
let myData = database.getData().catchError { api.getData() }