📌 에러 분석
error: dataCorrupted(Swift.DecodingError.Context(
codingPath: [CodingKeys(stringValue: "results", intValue: nil),
_CodingKey(stringValue: "Index 17", intValue: 17),
CodingKeys(stringValue: "original_language", intValue: nil)],
debugDescription: "Cannot initialize OriginalLanguage from invalid String value pt",
underlyingError: nil))
🔍 에러 메시지 해석
- dataCorrupted → JSON 디코딩 과정에서 예상하지 못한 값이 들어온 경우 발생
- CodingKeys(stringValue: "results") → results 배열 내부의 데이터에서 문제가 발생
- Index 17 → results 배열의 17번째 요소에서 오류 발생
- CodingKeys(stringValue: "original_language") → original_language 필드에서 오류 발생
- Cannot initialize OriginalLanguage from invalid String value pt→ "original_language" 필드에서 pt 값을 예상한 타입으로 변환할 수 없음
🚀 원인 분석
아마 original_language 필드를 enum으로 정의했고, JSON에서 받은 "pt" 값이 enum에 정의되지 않음
enum OriginalLanguage: String, Codable {
case en
case es
case fr
case de
}
❌ 위 코드에서는 pt(포르투갈어)가 enum에 없기 때문에 디코딩 중 오류가 발생함.
🛠 해결 방법
✅ enum에 unknown 추가
enum OriginalLanguage: String, Codable {
case en
case es
case fr
case de
case pt // 포르투갈어 추가
case unknown // 새로운 언어가 들어오면 기본적으로 unknown 처리
init(from decoder: Decoder) throws {
let container = try decoder.singleValueContainer()
let value = try? container.decode(String.self)
self = OriginalLanguage(rawValue: value ?? "") ?? .unknown
}
}
✅ 이제 pt와 같은 미등록 언어가 들어와도 .unknown으로 처리됨.
'Project > MovieClip' 카테고리의 다른 글
genre_ids 의 Int 타입의 배열에 맞는 genre 찾기 (0) | 2025.02.06 |
---|---|
테이블 섹션 별 데이터 모델 사용 (0) | 2025.02.06 |
TMDB API 데이터를 가져오는 방식 - async / await 방식 채택 (0) | 2025.02.05 |
테이블과 테이블 헤더뷰 제약조건 구현하기, 글자색 따로 주기 (0) | 2025.02.05 |
앱 개요 (0) | 2025.02.04 |