# 이걸 왜 공부하게 되었나요?

서버 통신 공부하면서 제대로 다루지 않으면 완벽히 코드를 이해할 수 없다고 생각해서 사전에 공부하려고 마음을 먹었답니당!!!!!

# 공부한 내용 정리하기

1. Codable이란?

자신을 변환하거나 외부표현(external representation)으로 변환할 수 있는 타입입니다.

Untitled

근데 이제 이 친구의 원형을 살펴보면 Decodable & Encodable을 알아야 됨 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 슈펄 이러니까 개발 공부는 진짜 하면 할수록 증식이 된단 말이져 ㅋㅋㅋㅋㅋㅋㅋ

typealias Codable = Decodable & Encodable
{
	"authenticationId" : "lyny123",
	"password" : "password34!!", 
	"nickname" : "닉네임적어주세요",
    "phone" : "010-1234-5678"
}

2. Encodable & Decodable

공식문서를 살펴보면 둘 다 프로토콜이라는 것을 알 수 있죠?

그럼 Codable은 Encodable과 Decodable을 준수하는 타입(프로토콜)이다! 라는 것을 알 수 있겠죠?

그러면 눈치 있는 사람들은 아래 느낌이라는 것을 대충 알 수 있겠죠? Encodable → 자신을 외부표현(external representation)으로 인코딩 할 수 있는 타입 Decodable → 자신을 외부표현(external representation)에서 디코딩 할 수 있는 타입

Untitled

Untitled

3. Codable로 JSON 형식 파싱하기

자 그럼 우리는 Codable을 채택해서 활요하면 되겠쬬? class, struct, enum에서 채택이 가능하기 때문에 class, struct, enum을 serialize / deserialize할 수 있다는 것을 의미하기도 합니다. 그럼 시작해봅시당!

i) 간단한 구조체 만든 후 Codable 채택하기

우리가 만든 구조체에 Codable을 채택하게 된다면, 우리는 이제 이 구조체를 통해 serialize / deserialize을 할 수 있게 된다구용~

import Foundation

struct AuthModel {
    let authenticationID: String
    let password: String
    let nickname: String
		let phone: String 
}

    enum CodingKeys: String, CodingKey {
        case authenticationID = "authenticationId"
        case password, nickname, phone
    }
}