[RxSwift] Filtering Operators

Martin Kim·2022년 4월 26일
0

RxSwift

목록 보기
3/8
  • 연산자는 Rx의 블록을 쌓는것과 같다.
  • Observable로 방출된 이벤트를 변환, 처리, 반응할 수 있다.

Filtering Operators

  • subscriber가 처리하려는 elements만 수신하도록 방출된 이벤트에 조건부 제약을 적용하는데 사용할 수 있다.
  • Swift 표준 라이브러리의 filter(_:) 메서드와 유사하다.

Ignoring Operators

ignoreElements

  • 모든 next 이벤트를 무시할 수 있다. 그러나, completed나 error 이벤트 같은 멈춤이벤트는 받아들이고 이로 인해 중단된다.

elementAt

  • 주어진 인덱스 순서의 방출된 이벤트를 제외하고 무시한다.

filter

  • 하나 이상을 필터 해야 하는 경우 사용한다.
  • 클로저를 사용하여 해당 클로저가 true를 뜻하는, 즉 해당 클로저를 통과하는 경우만 필터하여 수신한다.

Skipping Operators

skip

  • 원하는 개수의 elements를 스킵하고 싶으면, skip 연산자를 사용한다.

skipWhile

  • 스킵되지 않기 시작하는 순간 부터 필터링을 하지 않는 메서드

skipUntil

  • 트리거로 취급되는 Observable이 이벤트를 방출할 때 까지 관찰 중인 observable의 이벤트를 스킵한다. 즉, 동적인 방식이다.

Taking operators

  • skip의 반대 역할.
  • 원하는 갯수 만큼 이벤트를 취해가는 연산자.

take

  • 인자로 받은 수 만큼 이벤트를 취하고, 그 이후는 무시한다.

takeWhile

  • skipWhile과 비슷하다. 다만, 클로저에 통과되지 못하는 동안의 이벤트를 취한다.

추가적으로, 만약 각각 방출되는 element의 인덱스를 확인하려면, Swift 표준 라이브러리에서 제공하는 것과 비슷하게 enumerated 연산자를 사용하여 (index, element) 형식으로 인덱스를 확인할 수 있다.

takeUntil

  • takeWhile과 반대로, 조건이 일치할 때까지의 이벤트를 취한다.
  • 조건이 일치하는 순간의 이벤트를 포함할 것인지 포함하지 않을 것인지를 인자로 정한다.
  • skipUntil과 마찬가지로, 다른 observable을 트리거하여 조건으로 받을 수 있다.

Distinct operators

  • 중복을 필터링 시키는 연산자

distinctUntilChanged

  • 각 이벤트의 양 옆의 값들의 중복을 방지하는 연산자
  • 주의할 점은 각 양 옆의 값들을 ‘비교' 하기 위해, 각 element들이 Equatable 프로토콜을 준수해야 한다는 점이다. 만약 준수하지 않는다면 비교하는 클로저 표현식을 인자로 해서 어떻게 비교할 것인지 작성해 주어야 한다.

출처: Raywenderlich RxSwift

profile
학생입니다

0개의 댓글