# 02/Swift
[Swift] RxSwift
장딴지연
2023. 1. 11. 15:46
반응형
RxSwift
Every Observable instance is just a sequence
구성 요소
- Observable
- Operator - 연산자/결과 출력/다양한 값으로 변환 가능
- Scheduler - 커스텀 할 일 거의 없다고.
Observable - 관찰자
Observable<T>
- Rx 코드의 기반
- T 형태의 데이터 snapshot 을 ‘전달’ 할 수 있는 일련의 이벤트를 비동기적으로 생성하는 기능
- 하나 이상의 observers가 실시간으로 어떤 이벤트에 반응
- 세 가지 유형의 이벤트만 방출
enum Event<Element> {
case next(Element) // next element of a sequence
case error(Swift.Error) // sequence failed with error
case completed // sequence terminated successfully
}
// Finite Observable - 완료가 있음.
Network.download(file: "https://www...")
.subscribe(onNext: { data in
// 임시 파일에 데이터 추가
},
onError: { error in
// 사용자에게 에러 표현
},
onCompleted: {
// 다운로드 된 파일 사용
})
// Infinite Observable
// - 무한하게 관찰 가능한 sequence 예를 들어 기기의 가로나 세로로 변경하는 것을 관찰
UIDevice.rx.orientation
.subscribe(onNext: { current in
switch current {
case .landscape: // 가로모드 배치
case .portrait: // 세로모드 배치
}
})
Operator - 연산자
UIDevice.rx.orientation
.filter { value in
return value != .landscape // 세로모드만 지원
}
.map { _ in
return "세로로만 볼거에요!"
}
.subscribe(onNext: { string in
showAlert(text: string)
})
Scheduler
swift 에서 DispatchQueue 와 같다.
반응형