RxSwit - 来自可观察忽略错误的驱动程序

Wuj*_*ujo 4 swift rx-swift rx-cocoa

假设我有一些视图最初填充了一些数据。比我通过网络获取数据并想用这个更新的数据更新视图。

在这一点上,我想从这个 observable 创建 Driver 来驱动 UI 元素。但是,如果 observable 出现错误,我不想做任何事情,因为视图已经有一些数据,所以我只想忽略这样的错误。asDriver() 函数想要定义在出现错误时应该做什么。这样做可以吗:

let dataUpdated: Observable<DataItem> = ...

let driver = dataUpdated.asDriver(onErrorDriveWith: Driver<DataItem>.empty())
Run Code Online (Sandbox Code Playgroud)

?

小智 5

正如所建议的,解决方案可能是使用.filter(). 我想这样的事情会解决你的问题:

extension Observable {
    func asDriverIgnoringErrors() -> Driver<E> {
        return self.map { $0 as E? }
            .asDriver(onErrorJustReturn: nil)
            .filterNil()
    }
}
Run Code Online (Sandbox Code Playgroud)