Kyungmo's Blog

A little progress each day adds up to big results

[iOS] Fastlane을 적용하여 배포 자동화하기

Fastlane App을 빌드하고 앱스토어에 업로드하고 심사제출, 테스트빌드 업로드, 테스터 초대 등 번거롭고 오래 걸리는 작업들을 Fastlane을 통해서 자동화할 수 있습니다. Fastlane 설치부터 설정 배포까지 한번 알아보겠습니다. fastlane 설치 Fastlane은 여러 가지 방법으로 설치할 수 있습니다. 가이드에서 추천하는 Bun...

[Swift] UserDefaults: Custom Object(Model) 저장하기

UserDefaults에 Custom Object(Model) 저장하기 Sample model 생성 1 2 3 4 struct Genre: Codable { let id: Int! let name: String! } UserDefaults에 저장할 샘플 데이터를 만들겠습니다. genre와 여러개의 Genre를 가지는 genres...

[Swift] JSON Codable: Enum with unknown value

Codable에서 Enum 사용 Json 데이터의 값이 특정한(규칙적인) 형태라면 열거형인 Enum으로 매칭시켜 쉽게 사용할 수 있습니다. 예를들어 아래와같이 자동차 Data가 있을때 연료의 종류(가솔린, 디젤, LPG, 배터리)는 몇가지로 한정되어있기 때문에 Enum으로 매칭시키기에 적합합니다. JSON Data 1 2 3 4 5 { "...

[Swift] JSON Codable: Any Type Custom

Any type in Codable API통신을 하다보면 같은 Model로 Response가 오지만 특정 값의 타입이 일정하지 않은 경우가 있습니다. Case 1 1 2 3 4 { "id": 1234, "name": "Sung" } Case 2 1 2 3 4 5 { "id": "abcd", "name": "Sung" } Mo...

[RxSwift] TableView, CollectionView in RxCocoa

TableView 기존 UITableView를 통해 데이터를 표시하는 구조를 RxCocoa를 사용하여 구현해보도록 하겠습니다 우선 TableView에 보여줄 리스트 형태의 데이터를 Observable로 변경합니다. 1 2 var nameList = appleProducts.map { $0.name } var productList = applePr...

[RxSwift] RxCocoa Basics

RxCocoa Cocoa Framework에 Reactive의 장점을 더해주는 라이브러리 Install 1 2 3 4 5 6 # Podfile use_frameworks! target 'YOUR_TARGET_NAME' do pod 'RxCocoa' end Cocoa Touch 1 2 3 4 5 @IBOutlet weak va...

[RxSwift] RxSwift Traits

RxSwift Traits 1 2 3 4 5 protocol GithubType { func saveRepo(repo: Repo) -> Observable<Void> func findRepo(id: String) -> Observable<Repo?> func myInfo() -> Observable&l...

[RxSwift] Error Handling

Error Handling catchError next이벤트와 completed이벤트는 구독자에게 그대로 전달 error는 전달하지 않고 새로운 옵져버블로 교체 발생한 에러의 종류와 관계없이 항상 동일값이 리턴됨 네트워크 요청을 구현할때 많이 사용함 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ...

[RxSwift] Scheduler

Scheduler 스케줄러는 특정코드가 실행되는 컨텍스트를 추상화한것 컨텍스트는 로우레벨 Thread가 될 수도 잇고 Dispatch Queue, Operation Queue가 될 수도 있음 추상화된 컨텍스트이기 때문에 쓰레드와 1대1로 매칭되지 않음 Cocoa → GCD RxSwift → Scheduler subscribeOn ...

[RxSwift] Sharing Subscription

Sharing Subscription 구독 공유를 통해 불필요한 중복 작업을 방지 네트워크 요청, DB접근, 파일 읽기 등등… 모든 구독자가 하나의 구독을 공유하도록 구현 multicast subject를 파라미터로 받음 이벤트는 구독자에게 전달되는것이 아니라 subject로 전달됨 전달받은 이벤트를 다수의 구독자에게 전달함 유...