From 01af1a554a857eaaecc829c288aaaa86a9326b63 Mon Sep 17 00:00:00 2001 From: Krunoslav Zaher Date: Tue, 11 Aug 2015 09:34:17 +0200 Subject: [PATCH] RxResult -> throws for filter --- .../Observables/Implementations/Filter.swift | 18 +++++++++--------- .../Observable+StandardSequenceOperators.swift | 4 ++-- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/RxSwift/RxSwift/Observables/Implementations/Filter.swift b/RxSwift/RxSwift/Observables/Implementations/Filter.swift index 108543a7..28da58f2 100644 --- a/RxSwift/RxSwift/Observables/Implementations/Filter.swift +++ b/RxSwift/RxSwift/Observables/Implementations/Filter.swift @@ -23,26 +23,26 @@ class FilterSink: Sink, ObserverType { func on(event: Event) { switch event { case .Next(let value): - _ = self.parent.predicate(value).recoverWith { e in - trySendError(observer, e) - self.dispose() - return failure(e) - }.flatMap { satisfies -> RxResult in + do { + let satisfies = try self.parent.predicate(value) if satisfies { - trySend(observer, event) + observer?.on(.Next(value)) } - return SuccessResult + } + catch let e { + observer?.on(.Error(e)) + self.dispose() } case .Completed: fallthrough case .Error: - trySend(observer, event) + observer?.on(event) self.dispose() } } } class Filter : Producer { - typealias Predicate = (Element) -> RxResult + typealias Predicate = (Element) throws -> Bool let source: Observable let predicate: Predicate diff --git a/RxSwift/RxSwift/Observables/Observable+StandardSequenceOperators.swift b/RxSwift/RxSwift/Observables/Observable+StandardSequenceOperators.swift index 21a7427c..9b258963 100644 --- a/RxSwift/RxSwift/Observables/Observable+StandardSequenceOperators.swift +++ b/RxSwift/RxSwift/Observables/Observable+StandardSequenceOperators.swift @@ -11,14 +11,14 @@ import Foundation // filter aka where extension ObservableType { - public func filterOrDie(predicate: (E) -> RxResult) + public func filter(predicate: (E) throws -> Bool) -> Observable { return Filter(source: self.normalize(), predicate: predicate) } public func filter(predicate: (E) -> Bool) -> Observable { - return Filter(source: self.normalize(), predicate: { success(predicate($0)) }) + return Filter(source: self.normalize(), predicate: predicate) } }