본문 바로가기

프로그래밍 팁/Swift16

Swift에서 Codable 객체와 딕셔너리(Dictionary)를 상호 변환하는 방법 Encodable → 딕셔너리 Encodable 혹은 Codable을 따르는 객체를 딕셔너리 타입으로 변환하는 방법은 다음과 같습니다. 우선 extension부터 정의합니다. extension Encodable { func encode() throws -> [String: Any] { let data = try JSONEncoder().encode(self) guard let dictionary = try JSONSerialization.jsonObject(with: data, options: .allowFragments) as? [String: Any] else { throw NSError() } return dictionary } } 1. JSONEncoder를 사용해서 Encodable을 따르는 객.. 프로그래밍 팁/Swift 2020. 11. 18.
Swift에서 Unix Timestamp 값을 얻는 방법 스위프트로 코딩할 때 가끔 서버와의 통신 등을 이유로 유닉스 타임스탬프를 사용해야 할 때가 있습니다. 그런데 스위프트에서는 기본적으로 유닉스 타임스탬프 값을 얻는 방법을 제공하고 있지 않습니다. 따라서 이번 포스팅에서는 이를 간단하게 익스텐션으로 구현하는 방법에 대해 알아보겠습니다. 유닉스 타임스탬프(Unix Timestamp) 구현하기에 앞서 유닉스 타임스탬프에 대해 간단히 알아보겠습니다. 유닉스 타임스탬프란, 1970년 1월 1일 0시(UTC)를 기점으로 현재까지의 경과 시간을 초 단위로 환산하여 나타낸 값입니다. 예를 들어 2020년 1월 1일 0시(UTC)는 유닉스 시간으로 1577836800으로 표기합니다. 구현 방법 Date의 익스텐션에 프로퍼티 혹은 스태틱 프로퍼티를 추가함으로써 간단히 구현.. 프로그래밍 팁/Swift 2020. 11. 16.
RxSwift로 간단한 파일 다운로더 만들기 RxCocoa에는 URLSession을 리액티브하게 사용할 수 있도록 만들어 주는 익스텐션이 포함되어 있습니다. 이를테면 public func response(request: URLRequest) -> Observable라는 메소드를 사용해서 HTTPURLResponse와 Data를 리액티브하게 받는 등, 편의를 위한 메소드들이 존재합니다. 하지만 익스텐션으로 제공되는 메소드에 파일을 다운로드 받는 메소드는 존재하지 않습니다. 따라서 이번 포스팅에서는 RxSwift를 활용해서 이를 간단하게 구현해 보겠습니다. 구현 방법 우선, URLSession의 리액티브 익스텐션을 정의하고 그 안에 메소드의 파라미터와 적절한 반환형을 정의합니다. extension Reactive where Base: URLSessio.. 프로그래밍 팁/Swift 2020. 11. 15.
1-13. Swift - 옵셔널(Optionals) 문법 개념 정리 옵셔널(Optionals) 값이 존재하지 않을 수 있는 상황에서는 옵셔널을 사용합니다. 옵셔널은 두 가지 가능성을 내포합니다. 값이 존재하는 가능성과 존재하지 않는 가능성입니다. 값이 존재하는 경우에는 해당 값에 접근하기 위해 옵셔널을 해제할 수 있습니다. NOTE 옵셔널이라는 개념은 C 언어나 Objective-C 언어에는 존재하지 않습니다. 그나마 Objective-C 언어에서 객체 대신에 nil을 반환하는 메소드가 Swift의 옵셔널과 유사하다고 볼 수 있습니다. 여기에서 nil은 타당한 객체(valid object)가 존재하지 않는 것을 의미합니다. 하지만 Objective-C 언어의 이 nil이라는 개념은 객체에만 해당하는 개념으로 구조체(structure)나 기본적인 C 타입(basic C t.. 프로그래밍 팁/Swift 2020. 11. 11.