일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- DispatchQueue
- 팩토리메서드패턴
- 프록시패턴
- 옵저버패턴
- 파사드패턴
- 싱글턴패턴
- 스트래터지패턴
- Xcode
- 디자인패턴
- 상태패턴
- Lifecycle
- 이터레이터패턴
- 컴파운드패턴
- ViewController
- cocoapods
- 컴포지트패턴
- 데코레이터패턴
- 커맨드패턴
- 어댑터패턴
- 템플릿메서드
- RxSwift
- Scenedelegate
- SWIFT
- Mobile
- 추상팩토리패턴
- 스테이트패턴
- unowned
- 전략패턴
- ios
- WKWebView
- Today
- Total
목록RxSwift (8)
ios dev kangwook.
오늘은 업무하면서 Extension으로 선언해서 편리하게 사용했던 함수들을 소개해보려고 한다.1. Arrayextension Array where Element: Equatable { mutating func removeObject(obj: T) where T: Equatable { self = self.filter({ $0 as? T != obj }) }}말그대로 배열 내의 object를 지우는 기능이다.꽤나 편리하게 사용했던 기능 중 하나인데, 다만 중복되어 있어도 모든 object를 지우는 점만 유의하면 된다. 개꿀임 extension Array where Element: Equatable { mutating func removeDuplicates() { ..

Rx는 다중 플랫폼 프레임워크 RxSwift는 RxPython, RxRuby, RxJS 및 기타 모든 플랫폼이 준수하는 일반 API 디자인을 밀접하게 따르므로 iOS 또는 macOS 용 개발을 지원하는 UIKit 또는 Cocoa 와의 특정 기능이나 통합이 포함되어 있지 않다. RxCocoa는 독립형 라이브러리로, 미리 빌드된 많은 기능을 사용하여 UIKit 및 Cocoa와 더 잘 통합할 수 있다. RxCocoa는 반응형 네트워킹을 수행하고, 사용자 상호 작용에 반응하고, 데이터 모델을 UI 컨트롤에 바인딩하는 등의 작업을 수행할 수 있는 기본 클래스를 제공 Getting Started Wundercast라는 iOS 애플리케이션을 예로 프로젝트 시작 → OpenWeatherMap(http://openwea..

Prefixing and concatenating Observable로 작업할 때 가장 먼저 필요한 것은 observer가 초기 값을 받도록 보장하는 것 "현재 상태"에 대한 정보가 필요한 상황이 있다. → 현재위치 또는 네트워크 연결상태 example(of: "startWith") { let numbers = Observable.of(2, 3, 4) // numbers 시퀀스를 생성 let observable = numbers.startWith(1) // 시퀀스의 시작을 1로 설정하고 numbers가 연결 _ = observable.subscribe(onNext: { value in print(value) }) } 결과적으로 startWith(_: )는 보다 일반적인 concat 연산자 계열의 간단한 ..

Transforming elements Observable 은 아이템을 개별적으로 방출하지만 Observable을 UITableView 또는 UICollectionView에 바인딩 할 때와 같이 컬렉션 작업에 쓰려고 할 수도 있다. Observable 의 개별 아이템을 모든 아이템의 배열로 변환하는 편리한 방법은 toArray 를 사용하는 것 toArray 는 Observable 시퀀스를 해당 아이템 배열로 변환하고 해당 배열을 포함하는 .next 이벤트를 구독자에게 내보낸다. example(of: "toArray") { let disposeBag = DisposeBag() Observable.of("A", "B", "C") .toArray() .subscribe { print($0) } .dispose..

RxSwift의 Observable과 Subject를 배웠지만 UI를 데이터 모델에 바인딩하거나 새 컨트롤러를 제시하고 출력을 다시 가져오는 등 실제 사용은 어려울 수 있다. 프로젝트에 RxSwift 프레임워크를 추가하고 RxSwift의 기술을 사용하여 기능을 추가 Getting Started Using a Subject in a View Controller MainViewController.swift에 다음과 같은 코드를 추가 BehaviorRelay 는 일반 변수에 익숙한 것처럼 동작 DisposeBag은 ViewController가 소유하므로 ViewController가 해제되는 즉시 모든 구독도 삭제 이를 통해 Rx 구독 메모리 관리가 매우 쉬워진다. → 구독을 DisposeBag에 넣기만 하면 ..

Observable은 RxSwift의 기본 부분이지만 앱을 개발할 때 일반적인 요구 사항은 런타임에 Observable에 수동으로 새 값을 추가한 다음 subscriber에게 보내는 것 옵저버이자 옵저버 역할을 할 수 있는 것을 Subject라고 한다. What are Subjects? Subject는 Observable 이자 Observer Subject는 .next 이벤트를 수신하고 이벤트를 수신할 때마다 구독자에게 내보낸다. RxSwift에는 네 가지 Subject 타입과 Subject를 래핑하는 두 가지 Relay 타입이 있다. PublishSubject → 비어있는 상태로 시작하고 구독자에게 새 아이템만 내보낸다. BehaviorSubject → 초기 값으로 시작하여 새 구독자에게 이 값 또는 ..

What is an Observable? Observable은 Rx의 핵심 Observable은 일정 기간 동안 이벤트를 생성하며 그 과정에서 방출을 한다. 이벤트는 숫자 또는 사용자 지정 타입의 인스턴스와 같은 값을 포함하거나 탭과 같은 인식된 제스쳐일 수 있다. 이를 개념화하는 가장 좋은 방법 중 하나는 타임 라인에 표시된 marble diagram 왼쪽에서 오른쪽 화살표는 시간을 나타내고 번호가 새겨진 원은 시퀀스 요소를 나타낸다. 1이 방출되고 시간이 지나면 2와 3이 차례로 방출 Observable의 생명 주기동안 어느 시점에나 있을 수 있다. Lifecycle of an Observable 끝에 수직으로 된 막대가 있다는 것은 끝을 나타낸다. 이 Observable은 세 개의 탭 이벤트를 내보..

RxSwift가 무엇인지 부터 시작해서, 기초적인 개념 및 활용 방법에 대해서 포스팅할 예정이다. 이번 포스팅은 RxSwift에 대한 소개라고 할 수 있겠다. RxSwift 관찰 가능한 시퀀스 및 기능적 스타일 연산자를 사용하여 비동기 및 이벤트 기반 코드를 작성하기 위한 라이브러리로, 스케줄러를 통해 매개 변수 화 된 실행을 허용한다. 코드가 새로운 데이터에 반응하고 순차적으로 분리된 방식으로 처리할 수 있도록 하여 비동기 프로그램 개발을 단순화한다. Introduction to asynchronous programming 비동기 프로그래밍을 간단하게 설명하면 iOS 앱은 다음과 같은 작업을 수행할 수 있다. 버튼 탭에 반응 키보드를 이용하여 텍스트 필드에 입력 인터넷에서 큰 사진 다운로드 디스크에 데..