Firebase를 이용해 로그인 기능을 만들어보자! 1. 프로젝트에 코코아팟을 이용해 firebase 추가하기 아래표를 보고 프로젝트에서 필요한 기능을 추가해주자! 로그인 기능 사용할거니까 Core랑! Auth 요거 두개! 2. firebase에서 프로젝트 생성 https://console.firebase.google.com/u/0/ 위의 링크 들어가서 프로젝트 생성! firebase에서 프로젝트 생성 했으면 위의 이미지에서 iOS 이미지를 탭해서 iOS 앱 추가해주면 된다! 앱 번들아이디 입력해주고 등록하고! plist 다운받아서 앱에 추가해주면된다! 요부분은 아까 위에서 추가해줬으니 넘어가자! 요렇게 앱 진입점에서 코드를 추가해주면 된다! Authentication -> 로그인 방법 들어가서! 이메일..
Kingfisher 1.Kingfisher란? Kingfisher.Github Kingfisher란? Kingfishersms 이미지 캐싱을 쉽게하고, task관리도 해주는 라이브러리다. CocoaPods, SPM(Swift Package Manager), Carthage 모두 지원하며 원하는 방식을 사용해 import할수 있다. 이미지 캐싱이란? 캐시(Cache)는 컴퓨터과학 에서 데이터나 값을 미리 복사해 놓는 임시 장소를 가리킨다. 캐시는 데이터에 접근하거나 값을 계산하는 시간이 오래걸릴 경우 시간을 절약하고 싶은 경우에 사용할수있다. 캐시에 데이터를 미리 복사해 놓으면 계산이나 접근 시간 없이 더 빠른 속도로 데이터에 접근할 수 있다. 앱에서 이미지 캐싱을 활용하게 된다면 매번 서버에서 이미지를 ..
SnapKit Snapkit Github Snapkit 이란? Snapkit은 코드로 레이아웃을 간략하게 설정해줄수 있는 기능을 가진 라이브러리다. 오토레이아웃을 이해하고있다면 무리없이 사용할 수 있다. CocoaPods, SPM(Swift Package Manager), Carthage 모두 지원하며 원하는 방식을 사용해 import할수 있다. Snapkit을 사용하는 이유 예를들어 스택뷰를 View에 꽉채운다고 가정해보자. 기존에는 다음과 같이 레이아웃을 설정해줬다. private func setupContraint() { NSLayoutConstraint.activate([ stackView.topAnchor.constraint(equalTo: self.view.topAnchor), stackVie..
키보드의 검색 버튼을 입력했을때 뿐만아니라 키워드를 입력할때마다 Request를 요청할수 없을까?? (rx.text로 변경된 text감지하기) 4줄 요약 RxCocoa의 text (SearchBar.rx.text)를 이용해 text변경시 Request를 요청하도록 구현함. 의도한것과 다르게 처음 키워드를 입력할때와 키보드 제거시 Request요청 하는 문제가 발생함. text Definition을 확인해보니 SearchBar의 text가 nil일경우 "" 으로 옵셔널바인딩 하는것과 키보드제거(편집 종료) 되었을때도 text를 방출하는것을 확인함. distinctUntilChanged()오퍼레이터를 사용해 동일한 text를 방출하게될경우 무시하도록 하여 문제를 해결함. 처음 API Search기능 구현시 ..
RxSwift ErrorHandling ErrorHandling 앱에서 발생하는 가장 흔한 에러들은 다음과 같다. 인터넷 연결 없음: 아주 흔한 에러 중 하나다. 만약 앱이 인터넷 연결을 통해 데이터를 받아와야하는데 기기가 오프라인 상태가 된다면, 이를 감지하고 적절한 대응을 해줘야 한다. 잘못된 입력: 때에 따라서 정해진 폼에 따라서 입력값이 필요한 경우가 있다. 하지만 사용자는 언제든지 잘못된 값을 입력할 수 있다. 전화번호 입력란에 숫자대신 글자를 입력하는 사용자는 언제나 있을 수 있다. API 또는 HTTP 에러: API를 통한 에러는 아주 광범위하게 일어난다. 표준 HTTP 에러(400 또는 500 에러)를 통해 표시되거나 JSON 내 status 필드를 통해 표시될 수 있다. RxSwift에서..
RxSwift Combining Operators Combining Operators 다양한 방법으로 sequence들을 모으고, 각각의 sequence내의 데이터들을 병합하는 방법을 배워보자. observable로 작업할 때 가장 중요하게 확인해야 할 것은 observer가 초기값을 받는지 여부다. .startWith() 요녀석은 초기값을 갖는 옵저버블 이라고 할수있겠다. 이벤트가 발생되어 next로 방출될때 초기값을 방출한후 전달된 이벤트들을 방출할수 있게된다. 네트워크 연셜 상태 같이 현재 상태가 필요한 상황에 요녀석을 사용해 현재 상태를 초기값으로 붙여줄수 있겠다.let numbers = Observable.of(2, 3, 4) let observable = numbers.startWith(1) ..
RxSwift2 Observable Observable Observable은 이벤트 시퀀스를 비동기적으로 생성하는 기능을 가지고 있다. observable, observable sequence, sequence 모두 같은 말이다. 중요한것은 이 모든 것들이 비동기적()이라는 것 이다. 이 때 Observable이 지속적으로 이벤트를 발생시키는 것을 emit(방출)이라고 한다. 1. Observable의 LifeCycle next를 통해 1, 2, 3을 방출하는 Observable 세번의 tap 이벤트를 방출한뒤 Complete를 통해 종료된 Observable 1, 2를 방출하고 에러가 발생해 error를 통해 종료된 Observable 이전글에 작성한것처럼 여기서 next, error, complete..
RxSwift3 Subjects, Relay Hot Observable vs Cold Observable 언제 이벤트들이 방출 되는지에 따라 Observable을 두가지로 분류할 수 있다. 두가지의 차이점은 다음과 같다. 구독할 시 데이터를 처음부터 발행 여부 이벤트 발생 시점 스트림 분기 성질 Hot Observable Observable을 생성하고 일정 시간이 지난 상태에서 subscribe하면 처음 데이터를 받는 것이 아닌 중간부터 방출된 데이터를 받을 수 있게된다. 구독 여부와 상관없이 데이터를 방출합니다. 데이터를 처음부터 발행하는 것이 아닌 구독 시점에서 방출되는 값을 받기 시작합니다. 스트림을 분기하는 성질이 있다. 마우스, 키보드, 시스템 이벤트와 같은 UIEvent, 타이머, 멀티 캐스팅..