假设我有一些视图最初填充了一些数据。我通过网络获取数据,并希望使用此更新数据更新视图。
此时我想从这个observable创建Driver来驱动UI元素。但是,如果在observable中出现错误,我不想做任何事情,因为视图已经有一些数据,所以我只想忽略这样的错误。 asDriver()函数想要定义在出错时应该做什么。可以这样做:
let dataUpdated: Observable<DataItem> = ...
let driver = dataUpdated.asDriver(onErrorDriveWith: Driver<DataItem>.empty())
答案 0 :(得分:3)
如建议的那样,解决方案可能是使用.filter()
。我认为这样可以解决您的问题:
extension Observable {
func asDriverIgnoringErrors() -> Driver<E> {
return self.map { $0 as E? }
.asDriver(onErrorJustReturn: nil)
.filterNil()
}
}
答案 1 :(得分:0)
为什么不使用catchErrorJustReturn(DataItem())
?
答案 2 :(得分:0)
试试这个:
extension ObservableType {
public var asDriverSkippingErrors: Driver<Element> {
return map { Optional($0) }
.asDriver(onErrorJustReturn: nil)
.unwrap()
}
}