Есть ли оператор, который может фильтровать nil
? Самое близкое, что я нашел, это решение, упомянутое здесь: https://github.com/ReactiveX/RxSwift/issues/209#issuecomment-150842686
Соответствующий отрывок:
public protocol OptionalType {
func hasValue() -> Bool
}
extension Optional: OptionalType {
public func hasValue() -> Bool {
return (self != nil)
}
}
public extension ObservableType where E: OptionalType {
@warn_unused_result(message="http://git.io/rxs.uo")
public func notNil() -> Observable<E> {
return self.filter { $0.hasValue() }
}
}
Однако после .notNil()
E
по-прежнему является необязательным, поэтому последующие связанные операторы по-прежнему видят self
как Observer<E>
, где E
является необязательным. Поэтому мне все еще нужен дополнительный оператор, который делает:
.map { (username: String?) -> String in
return username!
}
Я должен что-то упустить. Кажется, это очень распространенная потребность.