정의
- 자신을 변환하거나 외부 표현으로 변환할 수 있는 타입.
- 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
https://zeddios.tistory.com/373
'iOS > iOS' 카테고리의 다른 글
앱이 시작할 때 main.c 에 있는 UIApplicationMain 함수에 의해서 생성되는 객체? (0) | 2022.04.15 |
---|---|
Core Data (0) | 2022.04.14 |
AnyObject (0) | 2022.04.11 |
모든 View Controller 객체의 상위 클래스는 무엇이고 그 역할은 무엇인가? (0) | 2022.04.09 |
prepareForReuse (0) | 2022.04.08 |
댓글