drop(while:) 메서드는 while 안의 클로저의 결과값이 false일 때 까지 계속해서 값을 무시하게 만드는 Operator입니다.

기능

사용

[1, nil, 2, nil, 3, nil, 4, nil, 5].publisher
  .drop(while: { value in
    return value != 4
  })
  .sink { completion in
    print(completion)
  } receiveValue: { value in
    print(value)
  }
  .store(in: &cancellables)
  
  
// 결과
Optional(4)
nil
Optional(5)
finished

1, nil, 2, nil … 차례대로 시퀀스를 순회하면서 4가 아닌 경우 모두 drop 하고 있습니다.

이후 4를 만나는 순간 데이터를 발행됩니다.

만약 발행되는 데이터 전부가 drop된다면 단순히 완료이벤트만을 호출하고 데이터 스트림이 종료됩니다.