swift

· iOS/RxSwift
이번 글에서는 Time base의 Operator를 정리해봅니다. replay subscribe를 했을 때, replay대상이 이전에 방출했던 element를 buffer만큼 다시 방출시켜주는 Operator입니다. replay를 지정해주고 connect()를 호출해주어야 합니다. print("- - - - - replay - - - - -") let shinee = PublishSubject() let replay = shinee.replay(2) replay.connect() // replay와 같은 연산자들은 connect를 해주어야 함 shinee.onNext("링딩동 링딩동") shinee.onNext("링디기딩디기딩딩딩") replay .subscribe(onNext: { print($0) }..
· iOS/RxSwift
이번 글에서는 두개 이상의 Observable을 결합하기 위한 Combining Operator들을 정리해보려 합니다. zip zip은 묶인 Observable들의 결과값을 쌍으로 묶어서 내보내줍니다. 쌍이 맞지 않은 결과값은 쌍이 맞을 때까지 방출될 수 없게 됩니다. zip으로 묶이는 Observable들은 데이터 타입이 달라도 상관이 없습니다. print("- - - - - zip - - - - -") enum Whose { case mine case yours } let almond = Observable.of("HoneyButter", "Wasabi", "MintChoco", "Corn", "Buldak") let whose = Observable.of(.mine, .mine, .yours, .m..
· iOS/RxSwift
[RxSwift] Filtering operators [RxSwift] Relay - PublishRelay, BehaviorRelay, ReplayRelay [RxSwift] Subject - PublishSubject, BehaviorSubject, ReplaySubject, AsyncSubject [RxSwift] Create Operators (1) just, of, from, range, empty, never [RxSwift] Create Operators (2) create 그리고 D swifty-cody.tistory.com 지난 글에서는 값을 선택적으로 받기 위한 Filtering Operators를 정리해봤습니다. 이번 글에서는 받은 값을 가공하기 위한 Transforming Opera..
· iOS/RxSwift
[RxSwift] Relay - PublishRelay, BehaviorRelay, ReplayRelay [RxSwift] Subject - PublishSubject, BehaviorSubject, ReplaySubject, AsyncSubject [RxSwift] Create Operators (1) just, of, from, range, empty, never [RxSwift] Create Operators (2) create 그리고 Dispose [RxSwift] Create Operators (3) defer [RxSwift] Trait swifty-cody.tistory.com 지난글에서 정리한 Relay를 마지막으로, Observable, Subject, Relay까지 정리를 다 했습니다...
· iOS/RxSwift
이번엔 Subject에서 파생된 Relay의 정리글입니다. Relay를 설명하기 전에 Relay의 등장배경을 먼저 정리를 하자면. 우리는 RxSwift를 앞서 정리한 예제들과 같이 데이터를 다룰때 뿐만 아니라, iOS 앱을 개발할 때 UI와 바인딩을 하여 활용을 하게 될텐데요. 앞에서 배웠던 Observable, Subject들을 그대로 사용했을 때 문제가 발생할 수 있습니다. 바로 이들의 특징 때문인데요. Observable과 Subject는 error가 발생했을 때 시퀀스가 종료되고, 종료된 시퀀스는 재활용을 할 수가 없습니다. 시퀀스가 종료되면 UI와의 바인딩도 종료되어 더이상 동작을 하지 않게 됩니다. 그래서 error와 complete이벤트가 발생하지 않는, 절대 종료되지 않음이 보장이 되는 S..
· Dev Life
2022년11월12일 포항에서 계최한 SyncSwift2022: Nesting 컨퍼런스에 참석했습니다. 일주일이나 지나서 후기를 남겨봅니다👀 실시간온라인으로도 진행했던 AsyncSwift는 계속 온라인으로 참여를 했었는데, 이번 SyncSwift 컨퍼런스는 오프라인으로만 진행을 한다고 하여 하지만 너무 가보고 싶었기에 포항으로 가기로 했습니다. After Party도 참여를 했습니다. 오프라인으로 개발행사를 가보는 것이 처음이고, 회사 밖의 다른 iOS개발자들을 만나는 것도 처음이라 두근두근합니다🤗 포항공대 입구에서 걷다보면 나오는 체인지업그라운드. 내부도 인상적이었던 공간. Talk Session이 진행된 Media Wall 공간. 입구에서 참석자 목걸이 및 굿즈들을 받고 들어갑니다. 목걸이 안쪽에는 ..
· iOS/RxSwift
Observable은 create할 때부터, 어떻게 데이터를 방출할지 정해져 있는 시퀸스입니다. create된 Observable을 subscribe함으로써 observer는 값을 받거나 받은 값을 가공할 수만 있는 read-only와 같습니다. Subject는 Observable이자 Observer역할을 모두 할 수 있고, create 이후에도 Observable의 외부에서 동적으로 원하는 값을 추가할 수 있는 시퀀스입니다. Subject에는 PublishSubject, BehaviorSubject, ReplaySubject, AsyncSubject가 있는데, 주로 PublishSubject, BehaviorSubject가 많이 쓰입니다. 하나씩 정리해보겠습니다. PublishSubject 이름과 같이..
· iOS/RxSwift
Observable은 next, completed, error 세 가지 이벤트를 방출하는 타입인데요. 하지만 항상 저 세 가지 이벤트가 모두 필요한 것은 아닙니다. 그래서 RxSwift는 상황에 맞는 Observable의 변형들을 제공하는데 이를 Traits(특성)이라고 합니다. Single, Completable, Maybe 이렇게 세가지 Traits가 있습니다. Observable을 사용해도 되지만, 이 Traits들은 이름을 읽고서 좀 더 쉽게 흐름을 파악할 수 있도록 해 주고, API를 읽는 사람들에게 코드의 의도를 명확하게 전달하는 방법을 제공하는 것이 목적입니다. Single Single은 success(value), failure(error) 이벤트만 방출시킵니다. (error(error)이..
· iOS/RxSwift
Observable의 생성 Operator 마지막 글입니다(아마도). 첫번째 글에서는 just, of, from, range, empty, never 를 정리했고 두번째 글에서는 create를 정리했습니다. 이번에도 이전에 정리한 생성 Operator와 또다른 성격의 defer를 해봅니다. deferred defer로 생성된 observable은 다른 생성 operator들과 다르게, observer가 subscribe를 호출하면 그 때부터 observable을 생성시킵니다. 그래서 defer는 subscribe할 때마다 다른 observable을 생성시키는 Factory를 구현할 수 있습니다. print("----- deferred -----") let disposeBag = DisposeBag() /..
· iOS/RxSwift
이전 글에서는 Observable을 생성할 수 있는 just, of, from, range, empty, never operator들을 정리해봤습니다. 이번 글에서도 이어서 생성 operator를 정리해보려고 하는데, 앞서 정리한 것들과는 조금 다른 operator들을 다뤄봅니다. Create RxSwift의 Lifecycle을 정리한 글에서 Observable이 next, completed, error 이벤트를 방출시키는 타입이라고 했죠. Create는 각 이벤트들을 방출시키는 onNext, onCompleted, onError 를 직접 구현하는 방식입니다. print("----- create (1) -----") Observable.create { observer -> Disposable in obs..
· iOS/RxSwift
RxSwift의 Lifecycle 중에서 가장 앞단계인 Observable의 생성을 위한 Operator들을 간단히 정리해봅니다. Just 단 하나의 Next이벤트로 Element를 방출하고 종료하는 Observable 시퀀스를 생성합니다. print("----- just(1) -----") Observable.just(1) // 1을 방출하는 Observable을 생성하는 just .subscribe(onNext: {// just가 방출시킨 값을 print하는 subscribe print($0) }) (출력) ----- just(1) ----- 1 를 생략하여도, just의 타입추론으로 Observable 타입으로 반환됩니다. Just로 여러개의 값을 방출시키고 싶다면 배열로 내보내면 됩니다. prin..
· iOS/RxSwift
지난 포스팅에서 정리한 Lifecycle을 ReactiveX 공식 사이트(https://reactivex.io)에서는 마블다이어그램(Marble Diagram)을 사용해서 설명하고 있습니다. 이 마블다이어그램을 잘 이해하면, Rx의 여러 Operator의 흐름을 이해하는데 도움이 됩니다. 마블다이어그램에서 각 상징들이 어떤 의미인지 설명하는 포스팅을 정리해봅니다. 화살표 라인은 Observable을 나타내고, 왼쪽에서 오른쪽으로 시간이 흘러감을 표현해줍니다. 화살표에 그려진 원(Marble)들은 Observable이 값(1, 2, 3, ...)을 방출시키는 next이벤트를 의미합니다. Observable에서 세번의 이벤트(tap)을 방출하고 나오는 세로선은 정상적으로 종료된 completed이벤트를 의미..
· iOS/RxSwift
RxSwift의 기본 요소 1. Observable Observable 형태로 사용되며, Element는 방출(emit)하고자 하는 타입입니다. Subscribe된 후 시간이 지남에 따라 유한, 무한의 이벤트를 방출하는 객체입니다. 유한의 이벤트는 URLSession을 통한 데이터 패치 이벤트가 예시가 될 수 있고, 무한의 이벤트는 사용자의 응답을 기다리는 UI의 이벤트가 예시가 될 수 있습니다. next, error, completed 이벤트를 방출합니다. next: 최신, 혹은 다음 Element와 함께 방출되는 이벤트입니다. error, completed 이벤트가 방출되기 전까지 계속 Element가 방출될 수 있습니다. completed: 성공적으로 이벤트 시퀀스가 종료됐다는 의미입니다. Obse..
· iOS/RxSwift
RxSwift에 대해 정리해보려고 합니다. RxSwift에 대한 글은 곰튀김님 강의, Raywenderlich 등이 참고되었습니다. RxSwift는 Observerble stream(=시퀀스)을 통해 (Swift로)비동기 프로그래밍을 하기 위한 라이브러리입니다. (https://reactivex.io : An API for asynchronous programming with observable streams) 애플은 비동기 프로그래밍 지원을 위해 많은 API를 제공합니다. NotificationCenter, Delegate Pattern, GCD, 클로저 등. + iOS13부터는 Combine까지. 우리는 iOS 앱을 개발하는 환경에서 매우 다양한 비동기 프로그래밍을 하게 되는데요. 여러 REST AP..
· iOS/Swift
ViewModifier 프로토콜은'View 혹은 View Modifier에 적용해서 기존과 다른 버전을 생성하는 프로토콜' 입니다.다시말해 커스텀 Modifier를 만들 수 있게 해주는 프로토콜입니다. 간단한 예시로 보겠습니다.아래와 같이 ViewModifier 프로토콜을 작성해줍니다.저는 제 앱에서 공통으로 사용할 타이틀 크기와 색상을 지정해주었습니다.struct MyAppTitle: ViewModifier { func body(content: Content) -> some View { return content .font(.system(size: 30, weight: .bold)) .foregroundColor(.indigo) }}  그리..
SwiftyCody
'swift' 태그의 글 목록 (5 Page)