일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 애니메이션
- 스위프트
- Clean Code
- uiscrollview
- 클린 코드
- swiftUI
- ribs
- Protocol
- combine
- ios
- MVVM
- rxswift
- UITextView
- 리팩토링
- 리펙터링
- SWIFT
- Refactoring
- RxCocoa
- tableView
- map
- UICollectionView
- uitableview
- Observable
- 리펙토링
- Xcode
- Human interface guide
- swift documentation
- HIG
- collectionview
- clean architecture
- Today
- Total
목록RxCocoa (22)
김종권의 iOS 앱 개발 알아가기
Single, Completable 차이 Single과 Completable 차이 Single은 onSuccess, onError 두 가지만 존재하고, success에서 값을 같이 방출 Completable은 onCompletable, onError 두 가지만 존재하고, 따로 값을 방출 x 값을 단순히 가져오거나 특정 일을 한 후 반환값이 필요 없는 경우, Single 대신에 Completable을 사용할 것 import UIKit import RxSwift class ViewController: UIViewController { let observable = Observable.create { observer in observer.onNext(10) print("finish") return Dispos..
ApplicationState ApplicationState는 크게 Not Running, Inactive, Active, Background, Suspended 상태가 존재 앱에서 상태를 체크하여 처리하는 대표적인 케이스 - Active (foreground) 상태와 Background 상태를 구분하여 Active상태에서는 푸시메시지가 전송 안되게끔 막는 방법 RxSwift로 ApplicationState 처리 방법 ApplicationState는 아래처럼 코드로 접근이 가능 UIApplication.shared.applicationState 코드로 확인할 수 있는 상태는 3가지만 존재 // UIApplication.swift @available(iOS 4.0, *) public enum State :..
retry를 쓰는 케이스 특정 네트워크에서 request 후에 response로 error를 받은 경우, 횟수나 exponential같은 시간 정책을 정해서 retry하는 경우에 사용 특정 처리에서 error를 받은 경우, 몇초 있다가 몇번은 retry하는 경우 사용 RxSwift를 사용한다고 할때, Observable 스트림에서 retry 연산자를 통해 쉽게 처리가 가능 예제에 사용할 프레임워크 RxSwift 데이터 준비 3개의 데이터를 방출한 후 error를 방출하는 Observable 생성 let someObservable = Observable.create { observer in observer.onNext("1") observer.onNext("2") observer.onNext("3") le..
UIButton 하나로 토글 버튼 구현 방법 UIButton에는 normal, selected, highlighted가 존재 normal과 selected 상태를 이용하여 토글 버튼으로 활용 highlighted애니메이션은 setImage(_:for:) 에서 for부분에 적용 normal -> highlighted 애니메이션은 for: .highlighted로 설정 selecte -> highlighted 애니메이션은 배열로 선언 [.selected, .highlighted] button.setImage(UIImage(named: "play"), for: .normal) button.setImage(UIImage(named: "play-pressed"), for: .highlighted) button.s..
재시도 처리 retryWhen 사용하여 아래와 같은 상황에서 재시도 처리 Observable로 감쌓여진 API 호출로부터 error 응답을 받은 경우, 특정 시간 이후에 다시 재시도 방법? Observable에 감쌓여진 특정 로직 처리 후 error 이벤트가 발생한 경우, 특정 시간 이후 다시 재시도 방법? 사용한 프레임워크 RxSwift RxCocoa retryWhen closure를 파라미터로 받아서 해당 해당 closure가 완료되면 시도했던 로직 self로 다시 sequence로 만들어서 동작 // PrimitiveSequence.swift public func retryWhen( _ notificationHandler: @escaping (Observable) -> TriggerObservabl..
1. RxSwift의 Map, FlatMap - 사용하여 비동기를 순서대로 처리 방법 2. RxSwift의 Map, FlatMap - 사이드 이펙트 처리 방법 (throw와 catch 사용) map과 flatMap 연산자 개념을 구분 개념 구분 flatMap은 블록 내에서 Observable을 리턴해야하므로, API를 사용할때 응답값이 Observable일때 flatMap사용 map의 리턴값은 Observable이 아니고, 사이드이펙트 처리 시 throw를 리턴하여 처리 주의사항: 스트림안에서 throw가 하나라도 방출되면, 해당 stream은 dispose되므로 사용자가 계속 재시도 할 수 있는 이벤트 처리에는 부적합한것을 주의 (예제 상황도 사용자가 계속 시도할 수 있으므로 부적합하지만 설명을 위해서..
1. RxSwift의 Map, FlatMap - 사용하여 비동기를 순서대로 처리 방법 2. RxSwift의 Map, FlatMap - 사이드 이펙트 처리 방법 (throw와 catch 사용) 편리를 위해 사용한 프레임워크 # UI pod 'SnapKit' pod 'Then' # Rx pod 'RxSwift' pod 'RxCocoa' # Network pod 'Moya/RxSwift' # Utils pod 'JGProgressHUD' # 로딩 사용한 API - Unsplash 이미지 조회를 위한 API https://unsplash.com/documentation 비동기 작업 순서 `확인` 버튼 탭 API를 통해서 이미지 url 획득, url을 UILabel에 입력 로딩 프로그래스 바 표출 후, url을 ..
예제 코드에서 사용한 프레임워크 코드로 UI 작성에서 편리를 위해 사용 pod 'SnapKit' pod 'Then' Rx 프레임워크 pod 'RxSwift' pod 'RxCocoa' WithLatestFrom vs CombineLatest 공통점 결합하는 요소들의 타입들이 달라도 사용 가능 차이점 a.withLatestFrom(b): a이벤트가 발생했을 때만 b 이벤트와 같이 방출 combineLatest(a, b): a나 b이벤트 둘 중 하나 발생했을 때 방출 주의사항: combineLatest(a, b)는 바로 방출 사용처 withLatestFrom: 버튼을 탭한 경우, 입력했던 이메일 값을 서버에 전송하여 유효성 검정 실시 combineLatest: 이메일과 패스워드 입력할 때마다 카운트하여, 로그..