분류 전체보기

    RxSwift(35). Driver, Signal

    RxCocoa가 제공하는 Traits중에서 가장 핵심적인것은 Driver이다. Driver는UI를 Bind하는 직관적이고 효율적인 방법을 제공한다. Driver는 특별한 옵저버블이고 UI처리에 특화된 몇 가지 특징을 가지고 있다. 1. 에러메세지를 전달하지 않는다. 오류로 인해 UI처리가 중단되는 상황은 발생하지 않는다. 2. 스케쥴러를 강제로 변경하는 경우를 제외하고 항상 메인 스케쥴러에서 작업을 수행한다. 이벤트는 항상 메인스케쥴러에서 전달되고 이어지는 작업 역시 메인스케쥴러에서 실행된다. 3. 드라이버는 사이드이펙트를 공유한다. 일번옵저버블에서 쉐어연산자를 호출하고 .whileConnect연산자를 호출한것과 동일하다. 모든구독자가 시퀀스를 공유하고 새로운 구독이 시작되면 가장 최근에 전달된 이벤트가..

    iOS - The compiler is unable to type-check this expression in reasonable time; try breaking up the expression into distinct sub-expressions(Rx 타입추론에러)

    The compiler is unable to type-check this expression in reasonable time; try breaking up the expression into distinct sub-expressions Rx를 공부하다가 발생한 에러. combineLatest와 map을 사용하다가 발생했다. 타입을 추론하기 어려워 빌드할 수 없다는 내용 Observable.combineLatest([redSlider.rx.value, greenSlider.rx.value, blueSlider.rx.value]) .map{ UIColor(red: CGFloat($0[0]) / 255, green: CGFloat($0[0]) / 255, blue: CGFloat($0[0]) / 255, ..

    RxSwift(33). RxCocoa Binding, UITextField+Rx

    보호되어 있는 글입니다.

    RxSwift(32). RxCocoa, ControlEvent, UIButton+Rx

    보호되어 있는 글입니다.

    RxSwift(31). ErrorHandling, (Catch, catchAndReturn), retry

    ErrorHandling 옵저버블에서 에러가 발생하면 에러이벤트가 발생하고 구독자는 더이상 새로운 이벤트를 받지 못한다. 예를들어 옵저버블이 네트워크요청을 처리하고 구독자가 UI를 업데이트하는 패턴를 생각해본다. 보통 UI를 업데이트 하는 코드는 NextEvent에서 처리하는데 EE가 전달되게되면 구독이 종료되고 더이상 NE가 전달되지 않는다. 그래서 UI를 업데이트하는 코드는 실행되지 않는다. RxSwift는 두 가지 방법으로 이런 문제를 해결한다. 첫 번째로 에러이벤트가 전달되면 새로운 옵저버블을 리턴한다. 여기에선 Catch연산자를 사용한다. Catch연산자는 NE와 CE는 그대로 구독자에게 전달한다. 반면 옵저버블에서 옵저버블에서 에러이벤트를 방출하면 새로운 옵저버블로 바꿔서 구독자에게 전달한다 ..

    RxSwift(30). Scheduler, observe(on:), subscribe(on:)

    보호되어 있는 글입니다.

    프로그래머스 - 거리두기 확인하기 Swift(구현)

    https://school.programmers.co.kr/learn/courses/30/lessons/81302 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 및 소스코드 허드슨 거리가 2라면 조건은 해선 안되는 포지션은 아래와 같다 행이 같을경우 POP -> 탈락 열이 같을 경우 P O P -> 탈락 행과 열이 다를경우(대각선인경우) P? ?P -> ?가 하나라도 O일경우 탈락 1차원 String배열로 1개의 맵이 주어지기 때문에 이를 2차원 배열로 바꿔줘야한다. 1개의 1차원배열에 대하여 2차원 Character배열로 바꾼다. for place..

    RxSwift(29). refCount, share

    보호되어 있는 글입니다.

    RxSwift(28). Sharing Subscription, multicast, ConnectableObservable, publish, replay

    Sharing Subscription Overview 구독공유를 통해서 불필요한 작업을 방지하는 방법. let source = Observable.create { observer in let url = URL(string: "https://kxcoding-study.azurewebsites.net/api/string")! let task = URLSession.shared.dataTask(with: url) { (data, response, error) in if let data = data, let html = String(data: data, encoding: .utf8) { observer.onNext(html) } observer.onCompleted() } task.resume() return ..