본문 바로가기

전체 글

(207)
[🔥Rx뿌셔] Subject - BehaviorSubject Behavior Subject BehaviorSubject는 PublishSubject와는 다르게 초기값을 가지고 시작한다. 다만, 그 초기값이 매번 일정한 것이 아닌 가장 마지막에 방출되었던 값이 초기값으로 지정된다. 이를 그림으로 확인하면 아래와 같다. -> Observable을 제일 처음 구독하는 구독자는 설정해준 초기 값으로 시작을 하게 되고, 그 다음구독자 부터는 구독하기 직전에 방출되었던 값으로 시작을 하게 된다. 코드로 구현하면 아래와 같다. let behaviorSubject = BehaviorSubject(value: "난 초기값이 있지롱") BahaviorSubject는 항상 초기값을 가지고 시작하기 때문에 초기화하는 방식도 PublishSubject와 조금 다르다. 이런식으로 초기화 ..
[🔥Rx뿌셔] Subject - Publish Subject Subject Subject는 Observable이자, Observer인 존재이다. 값을 수동으로 추가할 수 있으며 해당 값을 이미 구독 중인 subscriber에 emit할 수 있다. 예시 코드를 보자. ⬇️ // 1 let subject = PublishSubject() // 2 subject.onNext("듣고 있니 .. ?") // 3 let subscriptionOne = subject .subscribe(onNext: { (string) in print(string) }) // 4 subject.on(.next("얌마.")) // print: 얌마. // 5 subject.onNext("듣고 있냐고.") // print: 듣고 있냐고. 위의 코드에서 주석으로 표시한 숫자의 흐름은 아래와 동일하..
[🔥Rx뿌셔] Hot Observable VS Cold Observable Observable은 이벤트를 emit하는 요소이다. 그리고 이 Observable의 형태/종류는 크게 두가지로 나눌 수 있다. Hot Observable 🔥 은 구독 여부에 관계 없이 요소를 방출해주는 Observable, Cold Observable🧊 은 구독이 되어야지 비로서 요소가 방출이 되는 Observable 이다. 🧊 Cold Observable 일단 Cold Observable🧊은 우리가 일반적으로 지금까지 사용해오던 Observable이다. 즉 of, just, from, 그리고 커스텀하게 만든 Observable 에 별다른 처리를 하지 않았다면 모두 Cold Observable🧊 이다. 이 Observable은 구현을 하고 나서, 구독을 하지 않으면 요소가 절대 방출되지 않는다. 이름처..
[RxCocoa] 코코아 맛보기 .. 홀짝 .. ☕️ 개념과 함께 RxCocoa로 실시간 검색 화면을 만들어보자 !! RxCocoa란? RxSwift를 기반으로 만든 것이 RxCocoa인데 .. 왜 RxSwift가 있는데 RxCocoa가 만들어졌냐?! 이름에서 알 수 있는 것처럼 RxCocoa는 애플 환경의 앱을 제작하기 위한 도구들을 모아놓은 Cocoa Framework를 더 잘 사용할 수 있도록 만들어 놓은 Rx이다. (Rx+Cocoa Framework라고 생각할 수 있다.) RxCocoa는 RxSwift를 기반으로 만들어진 라이브러리이기 때문에, 사용하기 위해서는 SPM 또는 CocoaPod과 같이 의존성 도구를 통해서 별도로 추가해야한다. RxCocoa는 Cocoa Touch 프레임워크에 Reactive(반응형)의 장점을 더해준 라이브러리이다. Rx..
[RxSwift] Rx+MVVM으로 로그인 화면을 만들어보자. Rx+MVVM 예제를 살펴보면 주로 검색에 대한 테이블 뷰 화면, 또는 로그인 화면이 많은 것을 알 수 있는데, 실시간으로 반응해서 대응하는 화면이 Rx의 가장 큰 장점(반응형)을 돋보이게 할 수 있어서 그런 것 같다. 그러니까 한번 가보자고 ~ 먼저 화면부터 살펴보면 아래와 같다. 이렇게 위와 같이 이메일을 입력할 수 있는 텍스트필드와, 비밀번호를 입력할 수 있는 텍스트 필드 2개, 그리고 로그인 버튼으로 구성되어 있다. 🌱 MVVM 먼저 프로젝트 구성을 살펴보면 다음과 같다. MVVM 패턴이므로 Model-View-ViewModel의 구조로 구성되어 있다. #Model Model에는 위와 같이 로그인 화면에서 필요한 데이터 모델을 만들어준다. 이 때 우리는 크게 두가지 모델이 필요하다. ✅ 바로 로그..
[니카내카] 업데이트 내역 정리(+ 리드미 수정) 및 코드 개선 ing 업데이트 내역 정리 이 글을 작성하고 있는 지금 .. 221030 이다 .. 그동안 니카내카 업데이트는 꾸준하게 .. (?) 하고 있었지만 정리를 하고 있지 않았어서 .. (키워드만 정리해두고 어떤 이슈가 있었는지 등의 ..) 오늘 날을 잡고 한번 사-악 정리를 했다 .. 정리를 하면서 기분 좋아지는 나 .. 역시 J인간 .. 노션 정리 니카내카 작업 노션 안에 소개 노션이 있는데 .. 소개 노션이 앱에 연결된 정보라서 작업 노션을 숨기고 소개 노션만 공개한 상태이다. 그래서 아마 .. 현재는 아래의 링크로 들어가도 접속할 수가 없을텐데 곧 .. 두 페이지를 나눠서 작업 노션과 소개 노션을 분리해야겠다 .. ! https://receptive-humidity-bf2.notion.site/3fc56a889..
[🌱SeSAC] Observable VS Subject, Drive & Relay 오늘 글은 .. 기승전결이 있기 때문에 .. 차근차근 .. 따라가보자 .. ! 로그인 화면을 만들어보자. 이렇게 이름을 입력하는 텍스트 필드와, 텍스트 필드에 입력하는 값에 따라서 유효성 검사를 하는 경고 레이블, 그리고 버튼으로 UI를 만들 수 있다. 이 때의 로직은, 텍스트 필드에 8글자 이상 입력해야 경고 레이블이 사라지고 버튼이 활성화 되는 것이다. 그렇다면 우리는 아래와 같이 코드를 입력할 수 있다. nameTextField.rx.text // String? .orEmpty // String .map { $0.count >= 8 } // Bool .bind(to: stepButton.rx.isEnabled, validationLabel.rx.isHidden) .disposed(by: dispos..
[Git] Rebase란? Rebase 말 그대로 Base를 바꾸는 작업을 말한다. Rebase에서 잘 알고 있어야 하는 내용은 Rebase 자체에 대한 것도 중요하지만, Merge와의 차이점을 잘 알고 있어야 한다. Merge VS Rebase 먼저 Merge의 경우를 살펴보자. (3-way-merge) 위의 이미지의 경우에 Merge를 하면 어떻게 될까? 초기설정을 하고 메인 UI까지 작업을 한 다음, UI에 대해서 리펙토링을 하기 위해 Sokyte라는 브랜치를 파서 작업을 한다고 가정했을 때 (예를 들어서 기존의 CollectionView에 대해 DiffableDataSource, CompositionalLayout을 적용하기 위해 새로 브랜치를 판 경우를 생각해볼 수 있다 ..) 그리고 기존의 메인 브랜치에서는 리펙토링을 ..