본문 바로가기
iOS/iOS

Codable

by 황민우 2022. 4. 13.

정의

- 자신을 변환하거나 외부 표현으로 변환할 수 있는 타입.

- Decodable과 Encodable프로토콜을 준수하는 타입.

- Codable은 프로토콜이기 때문에, struct, enum, class에서 모두 채택 가능

- type이 다 지정되어 있는 객체 같은 경우 Codable만 채택하여 사용할 수 있습니다.

- UIKit을 반드시 import해주여야 합니다.


예제

- 우선 Decodable과 Encodable가 공통적으로 필요로 하는 모델을 작성했습니다.

- Person이라는 구조체를 만들었습니다.

- CodingKeys는 json key가 아닌 내가 원하는 이름으로 지정해줄 수 있게 해주는 프로토콜입니다.


Decodable

- 자신을 외부표현에서 디코딩할 수 있는 타입

 

- Decodable을 채택하면, 반드시 init을 생성해야 합니다.

- 위와 같이 Decodable을 채택한 후엔

1, jsonString이라는 임의의 json 형태인 string타입의 변수를 생성했습니다.

2, secode를 하기 위해 String타입을 Data로 변환하였습니다.

3, JSONDecoder()을 이용해 decode를 [Person] 타입에 맞게 하였습니다.

 

- 그럼 다음과 같이 [Person]타입에 맞추어 decode가 됩니다.

[Codable.Person(id:1, name: "Beckham", age: "46"),
Codable.Person(id:2, name: "Gerrard", age: "41"),
Codable.Person(id:3, name: "Terry", age: "41")]

Encodable

- 자신을 외부 표현으로 인코딩할 수 있는 타입

 

- Encodable은 Decodable의 반대로 하면 됩니다.

- Decodable과 마찬가지로 Encodable을 채택한 후, 코드를 작성합니다.

- decode와 반대로

1, userObject라는 객체를 만듭니다.

2, JSONEncoder의 encode메서드를 이용해 Data타입을 만든 후,

3, String 타입으로 만듭니다.

- 그럼 다음과 같이 json형태가 출력됩니다.

{"id": 1,"name":"Beckham", "age":46}

내용 출처

https://shark-sea.kr/entry/Swift-Codable-%EC%95%8C%EC%95%84%EB%B3%B4%EA%B8%B0

 

Swift :: Codable 알아보기

안녕하세요! 상어입니다. 블로그에 쓰고싶은 소재는 많은데 정말정말 꾸준히 한다는게 어렵네요 ㅎㅎ; 많은 블로그님들 존경합니닷 😄 오늘은 Codable에 대해서 알아볼까 합니다. swift4에서 나

shark-sea.kr

https://zeddios.tistory.com/373

 

Swift ) 왕초보를 위한 Codable / JSON Encoding and Decoding

안녕하세요 :) Zedd입니다. < 최신버전 확인하기 / App Udpate >글쓰다가 갑자기 Codable 개삘 Swift4가 나오기전에, JSON 파싱이 Swift4에서는 한줄로 끝난단다 하는 유튜브 영상을 봐서 오옷했던 기억이 있

zeddios.tistory.com

 

댓글