'does not conform to protocol Decodable'에 해당되는 글 1건

  1. 2023.12.20 [문제해결] Codale 타입에서 does not conform to protocol 'Decodable'

Swift 개발에서 RestApi를 호출하여 정보를 받아오는 경우가 많습니다. 그런 경우, 변수명 네이밍 규칙이 본인의 규칙과 다를 경우 CodingKeys를 이용하여 RestApi 명세의 항목과 개발하는 클래스(스트럭처)의 항목을 매핑하여 개발할 수 있습니다.

이때 주의 사항입니다.

struct MovieResult : Codable {
    let trackName : String?
    let previewUrl : String?
    let artworkUrl : String?
    let releaseDate : String?
    let shortDescription : String?
    let longDescription : String?
    
    enum CodingKeys : String, CodingKey {
        case trackName
        case previewUrl
        case artworkUrl = "artworkUrl100"
        case releaseDate
        case shortDescription
        case longDescription
    }
}
  • response값에 특정항목이 없을 경우를 대비하여 String? , Int? 형태로 nil 을 대비한다
  • response항목의 이름을 다르게 사용할 경우, enum CodingKeys : String, CodingKey{ ... } 를 정의한다.
  • enum CodingKeys에 모든 항목을 정의해야 한다. 누락시 오류 발생. 이름을 다르게 사용하고 싶은 항목만 정의(예시:artworkUrl)

만약, enum CodingKeys에 항목을 누락하거나 오타를 치게 되면, 아래와 같이 오류가 발생한다. 

Type *** does not conform to protocol 'Decodable'
Type *** does not conform to protocol 'Encodable'

type does not conform to protocol Decodable, Encodable

 

Posted by 목표를 가지고 달린다
,