[문제해결] Codale 타입에서 does not conform to protocol 'Decodable'
개발자 넋두리/아이폰개발(Swift) 2023. 12. 20. 07:13Swift 개발에서 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'
'개발자 넋두리 > 아이폰개발(Swift)' 카테고리의 다른 글
Swift 아이폰 개발에서 보통함수를 익명함수로 만드는 과정 (1) | 2024.12.26 |
---|---|
(문제해결) swift Main.storyboard 파일명 변경시 (1) | 2023.12.22 |
Do it! 스위프트로 아이폰 앱만들기(11~12장 내비게이션/테이블 뷰 컨트롤) (1) | 2023.10.13 |
Do it! 스위프트로 아이폰 앱만들기(9~10장 페이지/탭바 컨트롤) (1) | 2023.10.11 |
Do it! 스위프트로 아이폰 앱만들기(7~8장 웹뷰, 맵뷰 ) (0) | 2023.10.09 |