ios

    우아한 Model Data 처리 (1)

    우아한 Model Data 처리 (1)

    Struct와 Codable 프로토콜을 통해 주로 Server Response Data를 받습니다. 하지만, API 수정 및 신규 배포 등 의 문제로 인해 예상치 못한 String Key 값이 오거나, 자료형이 다른 Response Data가 올 수 있습니다. 보통, 이런 Decoding Error가 발생하게 되면 해당 데이터 전체를 쓸수가 없게됩니다. 즉 10개의 프로퍼티가 있는 Model 에서 유저가 몰라도 되는 프로퍼티의 자료형이 다르게 온다면, 해당 데이터 전체에 대한 Decoding Error가 발생하게 됩니다. 그렇다면, 좀 더 유연해질 순 없을까요? 물론, 쉽고 편하게 가능합니다 ! 나아가, String Key 값을 보통 enum으로 처리하게 되는데요. (String으로 값을 받은 후, en..

    간단하게 알아보는 GCD vs Swift Concurrency 차이

    간단하게 알아보는 GCD vs Swift Concurrency 차이

    동시성 문제 및 쓰레드 관리에서 어떠한 차이가 있는지 중점으로 알아보겠습니다. 먼저, Swift Concurrency가 어떻게 쓰이는지 간단하게 알아보겠습니다. func getlistPhotosURLS(inGallery name: String) async -> [String] { let result = // ... some asynchronous networking code ... return result } let photo = await getlistPhotosURLS(inGallery name: String) show(photo) 기존의 Completion Handler(escaping closure 이용한)를 이용해 비동기 코드를 다뤘던 부분을, async로 대체하고 해당 함수의 결과 값을 받는 ..

    Thread Safe한 Core Data 환경 구성하기

    Thread Safe한 Core Data 환경 구성하기

    CoreData는 Apple에서 기본으로 제공하는 객체지향 데이터베이스인 프레임워크 입니다. NSManagedObjectContext를 통해 CURD를 진행하며, Persistent Store Coordinator에 접근하고 Managed Object Instance를 생성하여 반환하여 데이터를 관리합니다. 기본적으로, 앱 내에 메모리를 저장할 수 있어서 최근 검색기록 및 내부데이터 등을 저장하기 위해 자주 사용됩니다. 간단한 데이터 저장이 필요한 경우라면 Side Effect가 크지 않을 수 있지만, 앱내에 저장해야할 데이터가 이미지이거나 한번에 많이 저장이 이루어진다면 멀티쓰레딩을 통해 CoreData 작업을 진행해야합니다. 하지만, 기본적으로 CoreData는 Thread Safe하지 않습니다. c..

    클로저 - Capturing Values와 ARC

    클로저 - Capturing Values와 ARC

    공식 Swift문서의 Closures Closures are self-contained blocks of functionality that can be passed around and used in your code 클로저는 자체 포함된 함수 블록으로, 전달이 가능하고 코드안에서 사용되어진다. Swift의 클로저에 대한 기본적인 개념을 알고 있다고 하고 시작하겠습니다. 전역 함수, 중첩 함수, 익명 함수 모두를 Swift에선 클로저라고 부릅니다. ARC와 관련된 값 캡쳐링은 중첩 함수와 익명함수에 유의해서 살펴보면 됩니다. 공식문서 설명: 전역 함수는 이름이 있고 값을 캡처하지 않는 클로저입니다. 중첩된 함수는 이름이 있고 둘러싸는 함수에서 값을 캡처할 수 있는 클로저입니다. 클로저 표현식은 주변 컨텍스..