코딩 배경 fireStore로부터 주소 데이터를 패치하여 CoreLocation 프래임워크의 메소드를 사용해 좌표 데이터로 변환하는 코드를 작성하였습니다. trouble 정의 주소 데이터를 좌표 데이터를 변환하기 전 주소 데이터를 사전에 받아 놓고 있어야한다. 하지만 네트워크 문제로 인해 데이터를 패치하기 이전 UI를 변경하기 때문에 값이 없는 nil값으로 UI를 처리하게 되고 문제가 발생하게 됩니다. trouble shooting 위의 문제를 해결하기 위해서 정상적으로 주소 데이터를 받은 후에 좌표 데이터로 변경하는 작업을 비동기적으로 처리해야합니다. 다시 말해, UI를 업데이트하는 시점 이전 정상적으로 주소 데이터를 패치 후에 진행합니다. 주소(String) 데이터를 좌표(CLLocationCoord..
기업에서 가장 공통적으로 요구하는 기술 스택인 비동기 처리를 위한 프레임워크인 RxSwift를 배워보도록 하겠습니다. RxSwift RxSwift = Reactive Extension Swift의 약자로 swift를 반응형 프로그래밍 하기 위한 라이브러리라고 할 수 있습니다. RxSwift를 사용하는 이유 1. 비동기 실행 코드를 이해하기 힘듬(애플의 API에서 제공하는 delegate패턴을 그대로 사용하고 구현코드를 확인할 수 없어 데이터의 흐름 파악에 어려움이 있다.) 2. RxSwift와 MVVM와 밀접한 연관 반응형 프로그래밍 반응형 프로그래밍이란, 데이터의 흐름 및 변경사항을 전파(emit?)하는데 중점을 둔 프로그래밍 패러다임입니다. 이 패러다임을 사용할 경우, 주변환경/ 데이터에 변화가 생길..
import UIKit import RxSwift import RxCocoa class ViewController: UIViewController { @IBOutlet weak var numberLabel: UILabel! @IBOutlet weak var increaseButton: UIButton! private let disposeBag = DisposeBag() private var number = BehaviorRelay(value: 0) override func viewDidLoad() { super.viewDidLoad() // increaseButton의 탭 이벤트를 감지하여 number를 1씩 증가 increaseButton.rx.tap .subscribe(onNext: { [weak s..