Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- UIResponder
- 입력
- 사내배포
- Responder chain
- MaxHeap
- weak self
- URLSession
- Combine
- 공백
- binder
- Python
- DISPATCH
- ReactorKit
- delays deallocation
- swift
- async
- RxSwift
- hitTest
- ios
- Custom Class
- UserDefaults
- vtable
- Asnyc
- BidirectionalCollection
- 전자출입
- input
- moya
- AVCaptureSession
- readLine
- reversed
Archives
- Today
- Total
틈틈히 적어보는 개발 일기
3. Transforming Operators 본문
Getting started
Operators Are publishers
여기서는 에러핸들링에 대한 내용 보다는 operator를 이용한 스트림의 변화에 대해 알아볼것이다~
Collecting values
.collect()
스트림을 모두 모아 하나의 array 로 반환합니다
💡 주의: 다른 counting or limit이 없는 buffering operators와 같이 사용할 경우 collect에 값을 계속 담게되어 이벤트가 방출하지 않아 메모리 누수가 일어날 수 있음
Mapping values
.map(_:)
발생하는 이벤트를 각각 매핑하여 다른 형태로 변환
.tryMap(_:)
try가 가능한 .map(_:)
try 문이 실패 시 스트림의 Error에 해당하는 failure(Error) 이벤트를 방출하고 스트림을 종료한다
example(of: "tryMap") {
// 1
Just("Directory name that does not exist")
// 2
.tryMap { try FileManager.default.contentsOfDirectory(atPath: $0) }
// 3
.sink(receiveCompletion: { print($0) },
receiveValue: { print($0) })
.store(in: &subscriptions)
}
// Result
——— Example of: tryMap ———
failure(..."The folder “Directory name that does not exist” doesn't exist."...)
Flattening publishers
.flatMap(maxPublisher:_:)
발생하는 여러 이벤트를 새로운 하나의 publisher로 매핑하여 이를 구독할 수 있도록 변환시켜줌
스트림 평면화! 여러 스트림 이벤트를 받아 하나의 스트림으로(1차원으로) 평면화 시켜줌
Replacing upstream output
replaceNil(with:)
optional 이벤트에 대해 값이 있다면 일반 값을, nil이라면 대체값을 방출함
Optional(value) ?? DefaultValue 와 동일한 효과를 가짐
replaceEmpty(with:)
Empty(completeImmediately: true) 에 대한 이벤트를 받았을 때 대체값을 방출함
이 때 (completeImmediately: false) 인 경우에는 replaceEmpty 스트림이 발생하지 않음
Incrementally transforming output
scan(_:_:)
reduce(_:_:) 와 유사하나, 각각의 모든 값들에 대한 이벤트를 방출한다
scan은 각각의 연산 결과를 이벤트로!
reduce는 연산 결과의 총합을 이벤트로!
'📱 iOS, Swift > 📚 Combine' 카테고리의 다른 글
4. Filtering Operators (0) | 2023.05.01 |
---|---|
2. Publishers & Subscribers (0) | 2023.04.09 |
1. Hello, Combine! (0) | 2023.04.02 |
Comments