TECH RAFA
/
RxSwift (3)
Search
Share
RxSwift (3)
갤러리 보기
갤러리 보기
Search
All Posts
Just
just
연산자는 단일 요소를 방출한 다음 완료되는
Observable
을 생성한다. 매우 간단하고 직관적인 방식으로 단일 값을 Observable로 변환할 수 있게 해준다.
출력 결과
장점
•
단일 요소를 방출하기에 매우 간단한 연산자임. 이를 통해 특정 값 하나를 방출해야 할 때 직관적으로 사용할 수 있음.
•
단일 값을 방출하고 완료한다는 명확한 목적을 가지고 있기 때문에 코드를 읽기 쉬움.
•
항상 동일한 값과 동일한 순서로 동작하기 때문에 예측 가능성이 높아 테스트와 디버깅에 용이함.
단점
•
단일 값만 방출할 수 있기 때문에 여러 값을 방출해야 하는 경우에는 다른 연산자를 사용해야 함.
•
고정된 값만 방출할 수 있기 때문에 동적 데이터나 조건에 따른 데이터 방출에는 적합하지 않음.
Of
of
연산자는 여러 개의 요소를 순차적으로 방출하는 연산자이다. 주로 짧은 시퀀스를 테스트하거나 특정 값들을 한 번에 방출해야 할 때 유용하다.
RxSwift Operators #1: Creating Operators
Subjects
Subjects는 Observable이자 Observer 역할을 한다. 따라서 Subject는 데이터를 방출(emit)하고 다른 Observable에서 데이터 이벤트를 받아들일 수 있다. RxSwift에서 제공하는 주요 Subject는 다음과 같다.
1.
Publish Subject
2.
Behavior Subject
3.
Replay Subject
4.
Async Subject
Relays
Relays는 RxCocoa에 포함되어 있으며 기본적으로 Subjects와 비슷하게 동작하지만 onCompleted나 onError 이벤트를 방출하지 않는다.
Publish Subject
Publish Subject는 새로운 구독자가 기존에 발행된 이벤트를 받을 수 없고 구독한 시점 이후의 이벤트만 받을 수 있다.
출력 결과
Publish Subject는 구독 시점 이후의 이벤트만 구독자에게 전달한다. 따라서 “Hello” 이벤트는 구독자가 없어서 아무도 받지 못했다. “World” 이벤트는 첫 번째 구독자가 수신했고 두 번째 구독자는 “World” 이벤트 이후에 구독했기 때문에 “RxSwift” 이벤트만 수신했으며 “RxSwift” 이벤트는 모든 구독자가 수신했다.
장점
Subject와 Relay
Decodable과 Encodable
Swift에서 데이터를 쉽게 처리할 수 있도록
Decodable
과
Encodable
프로토콜이 제공됩니다. 이 두 프로토콜은 외부 데이터 형식과 Swift 데이터 타입 간의 변환을 단순화하며
Codable
은 이 두 프로토콜을 모두 포함하는 타입 별칭입니다. 이번 글에서는
Decodable
과
Encodable
의 개념을 설명하고 왜 Codable을 사용하지 않고
Decodable
을 사용했는지에 대해 예제 코드와 함께 살펴보겠습니다.
Decodable
JSON, XML 또는 다른 데이터 형식에서
Swift 타입으로 데이터를 변환하는 데 사용
됩니다. 데이터를 받아와서 내부 모델로 변환하는 작업에서 활용됩니다.
예를 들어, 유튜브를 사용할 때 수많은 비디오 데이터를 서버로부터 불러와야 합니다. 유튜브 서버는 비디오 제목, 설명, 조회수 등의 정보를 JSON 형식으로 앱에 보냅니다. 이때, 앱은 이 JSON 데이터를 받아 내부에서 사용할 수 있는 데이터 모델로 변환해야 합니다. 이 과정에서
Decodable
프로토콜이 사용됩니다.
Encodable
Swift 타입을 JSON이나 XML 등의
외부 데이터 형식으로 변환하는 데 사용
됩니다. 데이터를 외부에 전송하기 전에 필요한 형식으로 만드는 작업에서 활용됩니다.
예를 들어, 메모 앱에서 사용자가 메모를 작성하면 이 메모 데이터를 JSON 형식으로 인코딩하여 서버에 전송해야 합니다. 이 과정에서
Encodable
프로토콜이 사용됩니다.
Codable은 언제 사용하나요?
Codable은 Decodable과 Encodable을 모두 합친 타입 별칭으로, 한 데이터 모델에 대해 동시에 디코딩과 인코딩을 모두 수행해야 할 때 사용됩니다. 그래서 디코딩만 필요하거나 인코딩만 필요한 경우에는 굳이 사용할 필요가 없습니다. 만약 디코딩 또는 인코딩만 필요한데 Codable을 사용한다면 코드의 목적을 저해시키고 코드의 가독성이 떨어지게 됩니다. 예를 들어, 설정 앱에서 설정을 변경하고 이를 서버에서 저장해야 할 때 사용됩니다.
따라서 이번 프로젝트에서 GitHub Api로부터 저장소를 불러오는 기능만 들어갔기 때문에 Decodable을 사용하였고 MVVM 패턴을 적용하였습니다. 모델 코드부터 보도록 하겠습니다.
Model
깃허브 앱 만들기(with. RxSwift)