틈틈히 적어보는 개발 일기

4. Filtering Operators 본문

📱 iOS, Swift/📚 Combine

4. Filtering Operators

itllbegone 2023. 5. 1. 17:56

Filtering basics

💡 기본적으로 filter {...} 의 효과와 동일함!
클로저 내부 결과(Bool)가 true이면 스트림이 지속되고, false라면 스트림이 걸러지게 됨

 

⭐️removeDuplicates()

RxSwift의 distinctUntilChanged() 와 동일
이전과 동일한 값이 방출될경우 해당 스트림을 필터링 함


Compacting and ignoring

💡 종종 publisher가 Optional 값을 방출하는 경우가 있거나 이벤트가 nil을 반환하는 경우가 있다!

이러한 이벤트를 다뤄보도록 하자

compactMap

클로저 내부 값이 대해 Optional이면 본래의 값을, nil 이라면 해당 이벤트를 방출하지 않음

ignoreOutput()

모든 이벤트를 무시함. 단 completion 이벤트는 방출함


Finding values

first(where: )

클로저 내부에 해당하는 처음에 대한 이벤트를 방출한 후 스트림을 종료함
해당 클로저에 해당하는 이벤트가 발생하고 난 후, 더이상 이벤트를 방출하지 않음

last(where: )

upstram이 끝나고 나면, 클로저 내부에 해당하는 마지막에 대한 이벤트 방출
first와는 다르게 upstream의 끝이 발생해야 last의 이벤트가 발생하고 종료됨

Dropping values

dropFirst(_ count: Int)

RxSwift의 skip(count: Int ) 와 동일
count에 해당하는 숫자 만큼의 이벤트를 무시 후 이벤트 방출

drop(while: )

RxSwift의 skip(while: ) 과 동일
클로저 내부의 결과가 충족이 되지 않을때까지 이벤트를 무시 후 이벤트 방출

drop(untilOutputFrom: Publisher)

RxSwift의 skip(until: Observable) 과 동일
파라미터에 해당하는 트리거 Publisher의 이벤트가 발생하기 전 까지 이벤트를 무시 후 이벤트 방출


Limiting values

prefix(_ maxLength: Int)

RxSwift의 take(_: Int) 와 동일
maxLenght에 해당하는 이벤트만을 방출하고 스트림 종료

prefix(while: )

RxSwift의 take(while: ) 과 동일
클로저 내부가 false가 되기 이전까지 이벤트를 방출하고 스트림 종료

prefix(untilOutputFrom: Publisher)

RxSwift의 take(until: ) 과 동일
파라미터에 해당하는 트리거 Publisher의 이벤트가 발생하기 전 까지 이벤트를 방출하고 스트림 종료

'📱 iOS, Swift > 📚 Combine' 카테고리의 다른 글

3. Transforming Operators  (0) 2023.04.23
2. Publishers & Subscribers  (0) 2023.04.09
1. Hello, Combine!  (0) 2023.04.02
Comments