본문 바로가기

분류 전체보기

(205)
[🔥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을 적용하기 위해 새로 브랜치를 판 경우를 생각해볼 수 있다 ..) 그리고 기존의 메인 브랜치에서는 리펙토링을 ..
[니카내카] 업데이트 사항 (version 1.2.2) 조금씩 업데이트를 하고 있는데 .. 티스토리에 글을 너무 안쓴 것 같아 .. 적어보는 중 .. 후 .. 미루지 말자 .. ! 코드 개선 Diffable Data Source, Compostional Layout 적용 설정 화면과 주차장 상세 화면을 새로운 CollectionView API로 코드개선, 적용해보았다. 흐름만 잘 잡고 있으면 생각보다 쉽지만 .. 아무래도 이전 방식이 더 익숙하다 보니까 ... 좀 더 유연하고 자유롭게 쓰기엔 아직은 어색하다고 느꼈다 .. 아직 아래 두가지가 조금 어려운? 익숙하지 않은? 느낌인데 .. 좀 더 공부하고 정리해봐야겠다 .. ! 🔥 Compositional Layout은 item, group으로 레이아웃을 잡는데 이것들의 관계 .. 그리고 좀 더 다양한 레이아웃을..
[🌱SeSAC] Observable/Observer, Subject, Relay Observable & Observer 데이터를 변경해줄 수 있는 이벤트가 있고, 이 이벤트에 따라서 변경되는 뷰, 로직이 있다. 즉, 이벤트를 방출할 수 있는 Observable이 있고, 이벤트를 처리하는 Observer가 있다. Observable과 Observer를 통해 데이터의 흐름(= Stream)을 통제할 수 있고 Operator를 통해 Stream을 변경, 조작할 수 있다. 사용자에게 텍스트 필드로 입력값을 받아서, 해당 입력값을 닉네임을 지정한다고 할 때, 그림으로 표현하면 아래와 같다. 그리고 코드로 구현하면 아래와 같이 작성할 수 있다. simpleTextField.rx.text .orEmpty .withUnretained(self) .bind { vc, value in vc.nickn..