[RxSwift / RxAlamofire] 네트워크 모듈 만들기
·
iOS/RxSwift
안녕하세요, iOS 개발하는 루피입니다. 오늘은 제가 RxSwift 관련 강의를 보며 공부했던 내용을 정리해보고, 그 과정에서 생긴 의문들도 해결해 보려고 합니다. 혹시 여러분도 iOS 개발을 하면서 네트워크 작업을 어떻게 처리할지 고민해본 적이 있으신가요? 저는 매번 그런 난관에 마주합니다 네트워크 요청이 끝난 후 데이터를 어떻게 처리하고, UI는 어떻게 유지할 것인지, 그리고 비동기적으로 모든 걸 처리하는 방법들 고민하는데 쉽지 않더라고요... 하지만 이번에 RxSwift와 RxAlamofire를 사용해 네트워크 요청을 처리하는 방법을 배워 보았습니다. 네트워크 작업을 쉽게 관리하는 구조 RxSwift는 단순한 비동기 처리 이상의 강력한 기능을 제공합니다. 특히 RxAla..
[RxSwift] 3. Operators
·
iOS/RxSwift
안녕하세요, iOS 개발하는 루피입니다. 오늘은 RxSwift에서 핵심 오퍼레이터들에 대해 재미있게 알아보려 합니다. RxSwift는 다채로운 오퍼레이터를 제공하여 비동기 데이터를 더 효과적으로 다룰 수 있게 해줍니다. 그럼, RxSwift의 핵심 오퍼레이터들을 소개하며 시작하도록 하겠습니다!!mapmap 오퍼레이터는 데이터의 형태를 변환해 줍니다. 입력값을 원하는 형태로 변환하여 새로운 Observable을 생성하죠. 예를 들어, 서버에서 받아온 JSON 데이터를 우리 앱에서 사용하기 좋은 형태로 바꿔준답니다.let numbers = Observable.of(1, 2, 3, 4)let mappedNumbers = numbers.map { $0 * 2 }mappedNumbers.subscribe(onNe..
[RxSwift] 2. Disposing
·
iOS/RxSwift
안녕하세요, iOS 개발자 루피입니다. 오늘은 RxSwift 공식 문서를 바탕으로 Disposing에 대해 함께 알아보려고 합니다. 그럼 바로 시작해 보겠습니다! :)시퀀스가 완료되었거나 더 이상 다가오는 요소를 처리할 필요가 없을 때, subscription에서 dispose를 호출하여 할당된 모든 리소스를 해제할 수 있습니다. 이를 통해 불필요한 리소스가 남지 않도록 관리할 수 있습니다. 예시 코드 let scheduler = SerialDispatchQueueScheduler(qos: .default)let subscription = Observable.interval(.milliseconds(300), scheduler: scheduler) .subscribe { event in ..
[RxSwift] 1. Observables aka Sequences
·
iOS/RxSwift
안녕하세요, iOS 개발하는 루피입니다! 오늘은 본격적으로 깃 허브에 있는 RxSwift 공식 문서를 바탕으로 공부하려합니다. 문서를 번역하면서 혹시 잘못 이해하거나 번역한 부분이 있다면 언제든지 피드백 주세요!BasicsObserver 패턴과 시퀀스RxSwift를 이해하는 데 있어 가장 중요한 개념 중 하나는 Observer 패턴과 일반적인 시퀀스의 유사성입니다.시퀀스: 순서대로 요소에 접근할 수 있는 프로토콜. 즉, 시퀀스는 요소를 순차적이고 반복적으로 접근할 수 있게 해주는 타입입니다.Observable: RxSwift에서 Observable은 시퀀스와 비슷하지만, 비동기적으로 요소를 수신할 수 있습니다.RxSwift의 핵심입니다.Observable과 Sequence의 차이점Observable: 비..
[RxSwift] From / Just / Of / Repeat / Interval / Timer / Range
·
iOS/RxSwift
안녕하세요, iOS 개발하는 루피입니다. 오늘은 공식문서를 바탕으로 Operator를 정리해보려 합니다. 자 그럼 시작해 보겠습니다!! From : 오직 하나의 배열을 받고, 배열의 원소들을 순서대로 방출하는 Observable로 변환하다.코드로 보면…let disposeBag = DisposeBag() // 여러 개의 객체를 하나의 Observable로 생성let numbers = [1, 2, 3, 4, 5]let observable = Observable.from(numbers)// 구독을 통해 이벤트 수신observable.subscribe( onNext: { number in print("Received number: \(number)") }, onCompleted: ..
[RxSwift] Empty / Never / Throw
·
iOS/RxSwift
안녕하세요, iOS 개발하는 루피입니다. 오늘은 공식문서를 바탕으로 Empty, Never, Throw Operator에 대해 공부해보려고합니다. 그러면 시작해볼까요? Empty, Never, Throw 연산자는 매우 특정하고 제한된 동작을 가진 Observable을 생성합니다.이러한 연산자들은 주로 테스트 목적으로 유용하며, 다른 Observable과 조합하거나 다른 Observable을 파라미터로 기대하는 연산자에 파라미터로 사용될 때도 활용됩니다.Empty : 아이템을 방출하지 않지만, 일반적으로 종료되는 Observable를 만듭니다.예를 들어 코드로 보면 …// DisposeBag 생성let disposeBag = DisposeBag()// Empty Observable 생성let emptyOb..
[RxSwift] Create / Defer
·
iOS/RxSwift
안녕하세요, iOS 개발하는 루피입니다. 이번 시간은 공식문서를 바탕으로 Create와 Defer에 대해 공부해 보도록 하겠습니다. 그러면 시작하겠습니다.Create : 함수를 이용하여 처음부터 Observable 생성하기Create 연산자를 사용하여 처음부터 Observable을 생성할 수 있습니다. 이 연산자에 옵저버를 매개변수로 받는 함수를 전달합니다. 이 함수는 옵저버의 onNext, onError, onCompleted 메서드를 적절히 호출하여 Observable처럼 동작하도록 작성합니다. 올바르게 구성된 유한한 Observable은 옵저버의 onCompleted 메서드를 정확히 한 번 호출하거나, 또는 onError메서드를 정확히 한 번 호출해야 하며, 그 이후에는 옵저버의 다른 메서드를 호출..
[RxSwift] Map / FlatMap
·
iOS/RxSwift
안녕하세요, iOS 개발하는 루피입니다.오늘은 공식문서를 바탕으로 Map과 FlatMap에 관해 정리해보려 합니다. 그러면 시작해 보겠습니다!! Map 과 FlatMap은 주로 Observable이 배출한 아이템들을 변환하는데 사용하는 Operator들 이다.Map : Observable이 배출한 항목에 함수를 적용한다.Map 연산자는 Source Observable이 방출하는 각 아이템에 사용자가 선택한 함수를 적용하고, 그 함수의 적용 결과를 방출하는 새로운 Observable을 반환합니다. 이때, Source Observable은 원본 데이터를 방출하는 주체를 의미한다. 쉽게 말해서는 가장 처음에 데이터를 방출하는 Observable 이라고 생각하면 됩니다. 예를 들어 코드를 살펴 보면,Observ..