일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Xcode
- UICollectionView
- tableView
- 리팩토링
- collectionview
- Human interface guide
- rxswift
- 스위프트
- Refactoring
- SWIFT
- HIG
- 애니메이션
- map
- uiscrollview
- 리펙토링
- ios
- RxCocoa
- combine
- UITextView
- Observable
- 클린 코드
- ribs
- swift documentation
- Clean Code
- clean architecture
- 리펙터링
- uitableview
- Protocol
- swiftUI
- MVVM
- Today
- Total
목록rxswift (43)
김종권의 iOS 앱 개발 알아가기
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: 이메일과 패스워드 입력할 때마다 카운트하여, 로그..
* 주의: Section이 한개밖에 없는 경우 해당 방법 사용하고, 만약 Section이 여러개면 RxDataSource 사용 방법 포스팅 글 참고 Cell 준비 // MyCell.swift import UIKit final class MyCell: UITableViewCell { private let label: UILabel = { let label = UILabel() label.font = .systemFont(ofSize: 24) label.textColor = .black return label }() override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { super.init(style: style, reuseId..
Reactive Extension을 사용하기 위해 알아야하는 개념 KeyPath, WritableKeyPath, ReferenceWritableKeyPath, DynamicMemberLookup 개념 포스팅 글 Observable, Observer, Producer, ControlEvent, Binder 개념 (RxSwift, RxCocoa) 포스팅 글 Reactive란? rx 네임 스페이스의 정체 아래와 같이 RxSwift의 Reactive 파일을 보면, ReactiveCompatible에 rx 연산 프로퍼티가 존재하고 getter부분에는 타입을 리턴 ReactiveCompatible을 채택하면 해당 클래스에서는 rx프로퍼티로 접근할 수 있고, rx프로퍼티에서는 base인스턴스를 가지고 있으니, 최종적..
참고) RxSwift6 기준, RxSwift: Observable, Observer, Producer, Binder RxCocoa: ControlEvent Observable, Observer, Producer 형태 RxSwift 프레임워크 안에 존재 Observable의 구조 ObservableConvertibleType 프로토콜 asObservable() 메소드 구현을 강제화 Observable로 변환할 수 있는 타입이면, asObservable 메소드가 존재 public protocol ObservableConvertibleType { associatedtype Element func asObservable() -> Observable } ObservableType ObservableType은 s..
1. Observable로 Wrapping하여 권한 요청) 위치 권한, 실시간 위치 정보 획득 2. Observable로 Wrapping하여 권한 요청) 사진 권한, 카메라 권한 3. Observable로 Wrapping하여 권한 요청) 마이크 권한, ATT(App Tracking Transparency) 권한 4. Observable로 Wrapping하여 권한 요청) RxSwift의 concat을 이용하여 순서대로 권한 요청 방법 아이디어 권한 설정코드들을 Observable로 wrapping RxSwift의 concat연산자를 활용하여 Observable들을 순서대로 방출 Observable로 Wrapping하는 방법이 나와있는 위 Observable로 Wrapping, 1 ~ 3번 글 확인 세팅 프..
1. Observable로 Wrapping하여 권한 요청) 위치 권한 요청, 실시간 위치 정보 획득 2. Observable로 Wrapping하여 권한 요청) 사진 권한, 카메라 권한 3. Observable로 Wrapping하여 권한 요청) 마이크 권한, ATT(App Tracking Transparency) 권한 4. Observable로 Wrapping하여 권한 요청) RxSwift의 concat을 이용하여 순서대로 권한 요청 방법 Observable로 wrapping 작업 핵심 기존에 Observable 형태를 리턴해주는 작업이면, RxSwift의 생성자 연산자 중에 deferred 연산자 사용하여 wrapping (해당 글) 기존에 Observable 형태가 아니고 클로저 형태로 값을 받는 경우..
Scan 연산자 Scan 연산자: 이전에 방출된 아이템과 새로 방출된 아이템을 결합하여, 새로운 아이템을 생성 새로운 아이템은 그 다음 방출된 아이템의 prev값 Scan 연산자의 핵심은 scan 연산자 내부에 기존 값을 저장하고 새로운 값을 받아서 연산 할 수 있다는 것 scan 연산자 예시1) +, - 카운터 기능 구현 사용할 프레임워크 pod 'RxSwift' pod 'RxCocoa' pod 'SnapKit' UI 준비 - ViewController +, - 버튼을 탭했을 때 카운트를 표출할 UILabel, UIButton 준비 값을 방출하고 구독도 할수 있는 BehaviorRelay 변수 선언 let countRelay = BehaviorRelay(value: 0) 버튼이 탭할때마다 countR..