clamp
Clamp
clamp
글쓰기 관리
전체 방문자
오늘
어제
  • 분류 전체보기 (509)
    • IOS (85)
    • SwiftUI+TCA+Combine (9)
    • RxSwift + MVVM (56)
    • Clean Architecture (12)
    • SWIFT (56)
    • iOS - TDD (2)
    • 디자인패턴 (4)
    • CS (56)
      • 알고리즘 (29)
      • 운영체제 (15)
      • 자료구조 (2)
      • 네트워킹 (4)
      • 기타 (6)
    • 회고 (0)
    • Firebase (18)
    • SwiftUI (10)
    • iOS - UIKit (11)
    • iOS - 오픈소스 (6)
    • 코딩테스트 (166)
      • 프로그래머스 (164)
    • 정보처리기사 (14)
    • GitHub (2)
글쓰기 / 관리자

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • Q
  • Swift
  • ㅅ
  • uikit

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
clamp

Clamp

IOS

Swift - Codable Protocol

2022. 2. 22. 14:45

Codable

Codable은 Swift의 Decodable과 Encodable프로토콜을 결합한 프로토콜이다.

이들은 사용자 정의 유형에 대한 데이터 디코딩 및 저장 또는 전송될 인코딩 데이터의 표준을 제공한다.

 

JSON과 함께 Codable을 사용하면 데이터 개체를 반환하기 위해 코드 구문 분석에 필요한 모든 검사가 필요하지 않으며 데이터가 복잡해짐에 따라 다양한 복잡성을 처리하여 코드를 가능한 최소화하며 깔끔하게 유지한다. 이러한 코드는 읽기 쉬우며 유지관리가 가능하며 데이터가 복잡해 지면 해당 데이터를 Swift객체로 구문분석하는 코드가 많아지고 유지관리가 힘들어 진다.

 

예시를 들어보자.

// JSON Data:
{
 "id": 1234,
 "src": "//api.someHost.com/version/someImageName.jpg",
 "caption": null
}

이러한 JSON DATA가 있을 경우 JSON data를 Swift의 구조체로 저장하기 위해 Codable을 사용하지 않으면

struct Photo {
 let id: Int
 let src: URL
 let caption: String?

 init?(json: [String: Any]) {
 guard
 let id = json[“id”] as? Int,
 let srcString = json["src"] as? String,
 let src = URL(string: srcString)
 else { return nil }

 let caption = json["caption"] as? String

 self.id = id
 self.src = src
 self.caption = caption
 	}
 }

총 19줄의 코드가 필요하다 하지만 Codable 프로토콜을 사용하면

struct Photo: Decodable {
 let id: Int
 let src: URL
 let caption: String?
}

5줄의 코드로 단순화 된다.

 

Codable은 JSON키와 이름이 같은 객체가 있을경우 JSON의 데이터는 키가 같은 Swift객체 구조체의 상수로 매핑된다.

 

JSON키를 열거형으로 분리하고 대부분의 "if - let", "guard - else" 문의 필요성을 제거할 수 있다.

저작자표시 비영리 동일조건 (새창열림)
    'IOS' 카테고리의 다른 글
    • IOS - charts library
    • IOS - COCOAPODS
    • IOS - URL Session을 이용한 HTTP통신
    • IOS - Timer
    clamp
    clamp
    주니어 iOS개발자의 발악!!!!!!!

    티스토리툴바