4

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

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

let dataUpdated: Observable<DataItem> = ...

let driver = dataUpdated.asDriver(onErrorDriveWith: Driver<DataItem>.empty())

?

4

3 回答 3

5

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

extension Observable {
    func asDriverIgnoringErrors() -> Driver<E> {
        return self.map { $0 as E? }
            .asDriver(onErrorJustReturn: nil)
            .filterNil()
    }
}
于 2018-11-01T13:27:06.977 回答
0

尝试这个:

extension ObservableType {
    public var asDriverSkippingErrors: Driver<Element> {
        return map { Optional($0) }
            .asDriver(onErrorJustReturn: nil)
            .unwrap()
    }
}
于 2021-07-01T20:20:59.347 回答
0

你为什么不使用catchErrorJustReturn(DataItem())

于 2017-09-15T12:13:18.450 回答