Codable 을 알아보자!

2022. 9. 6. 00:04iOS

Codable에 대해서 알아보겠습니다.!

 

Codable

 

Codable은 Encodable과 Decodable이 합쳐진 거랍니다.

여기서 Encodable과 Decodable이란,

Encodable -> data를 Encoder에서 변환해주려는 프로토콜로 바꿔주는 것

Decodable -> data를 원하는 모델로 Decode 해주는 것

 

음.. 다른 예로는

기존 파일이 있는데 이 파일을 압축하는 일을 Encodable 
압축 파일을 기존 파일로 만드는 것 Decodable 

이렇게 생각하시면 될꺼 같습니다.

++(추가적인 예시 JSON 사용 시에

Encodable -> model을 json으로 인코드

Decodable -> json을 나의 model로 디코드 이렇게 생각하시는 방법도 있습니다.

 

Codable 사용법

Codable 은 프로토콜 이기 때문에 채택을 해야 하는데 어디서든 다 가능합니다.

class, struct, enum 전부 가능합니다.

 

struct Feed: Codable {

    let title: String

    let id: String

}

Codable은 프로토콜이랑 채택을 해줘야 한다.

채택을 했다면.. Encodable와 Decodable을 둘 다 채택한 것과 같다.

이제 여기서 Feed는 외부 표현식으로 변환할 수 있게 됩니다.

외부 표현식 == JSON 일 때 

JSON으로 변환할 수 있다네요 == JSON으로 만들 수 있다네요.

Feed를 JSON으로 만들려고 한다면

 

let encoder = JSONEncoder()  제이손 하나를 생성해줍니다.

그럼  let feel = Feed(title: "fell", id: "hemg") 이러한 코드가 작성이 가능합니다

Feed에 인코딩을 하고 싶은 인스턴스를 만들어 줍니다.

그리고..

 

let jsonData = try? encoder.encode(feel)

방금 Feed의 타입 인스턴스를 만들었습니다. 그걸 encoder의 encode 메소드에 넣었습니다.

그리고 코드를 추가해줘야합니다.

 

 if let jsonData = jsonData, let jsonString = String(data: jsonData, encoding: .utf8) {

            print(jsonString)

        }

if let 를 구분을 추가하여 try? - jsonData를 Optional

String(data:,encodin:)의 리턴 타입 ?, 즉 Optional. 로 해준다.

이렇게 JSON을 만든다...

 

 struct Feed: Codable {

        let title: String

        let id: String

    }

     let encoder = JSONEncoder()

        let feel = Feed(title: "fell", id: "hemg")

        let jsonData = try? encoder.encode(feel)

        if let jsonData = jsonData, let jsonString = String(data: jsonData, encoding: .utf8) {

            print(jsonString)

        }

    }

 

이렇게 JSONEncoder에 대해 알아봤습니다.

하지만 많이 Encoder보다 파싱.. Decoding 을 더 많이 해서 Decoding에 대해 더 알아보도록 하겠습니다.

 

'iOS' 카테고리의 다른 글

하나의 TableView에서 다중 Cell 작업하기  (0) 2022.10.30
JSON Decoder 대해 알아보자!  (0) 2022.09.06
동기 // 비동기 대해 알아보자!  (0) 2022.08.14
브레이크 포인트 다루기  (0) 2022.07.02
Xcode 의 각 영역과 명칭  (0) 2022.07.02