Created
December 5, 2016 21:30
-
-
Save mminer/397e4f96af35cbf4034dd8c7638be715 to your computer and use it in GitHub Desktop.
Custom RxSwift operator that maps and unwraps an optional value.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import RxSwift | |
extension ObservableType { | |
/// A map that unwraps an optional value, only continuing if the result is not nil. | |
func ignoreNilMap<R>(transform: @escaping (E) -> R?) -> Observable<R> { | |
return Observable.create { observer in | |
return self.subscribe { element in | |
switch element { | |
case .next(let value): | |
guard let result = transform(value) else { | |
break | |
} | |
observer.onNext(result) | |
case .error(let error): | |
observer.onError(error) | |
case .completed: | |
observer.onCompleted() | |
} | |
} | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment