2022. 9. 6. 00:04ㆍiOS
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 |