📌 에러 분석
에러 메시지를 보면 Swift.DecodingError.dataCorrupted가 발생
ailed to fetch data: dataCorrupted(Swift.DecodingError.Context(
codingPath: [CodingKeys(stringValue: "results", intValue: nil),
_CodingKey(stringValue: "Index 10", intValue: 10),
CodingKeys(stringValue: "known_for_department", intValue: nil)],
debugDescription: "Cannot initialize KnownForDepartment from invalid String value Directing",
underlyingError: nil))
🔍 에러 메시지 해석
- dataCorrupted → JSON 디코딩 중 예상하지 못한 값이 들어와 발생하는 오류.
- CodingKeys(stringValue: "results") → results 배열 내부의 데이터에서 문제가 발생.
- Index 10 → results 배열의 10번째 요소에서 오류 발생.
- CodingKeys(stringValue: "known_for_department") → "known_for_department" 필드에서 오류 발생.
- Cannot initialize KnownForDepartment from invalid String value Directing→ "known_for_department" 필드에서 "Directing" 값을 예상한 타입으로 변환할 수 없음.
🚀 원인 분석
known_for_department 필드를 enum으로 정의했음.
그런데 JSON에서 "Directing" 값이 들어왔지만, enum에 "Directing"이 포함되지 않아서 오류가 발생
🔷 기존 enum 정의
❌ 아래 코드에서는 "Directing"이 enum에 없기 때문에 디코딩 중 오류가 발생
enum KnownForDepartment: String, Codable {
case acting = "Acting"
case writing = "Writing"
case production = "Production"
}
🛠 해결 방법
✅ 1. enum에 "Directing" 추가
enum KnownForDepartment: String, Codable {
case acting = "Acting"
case writing = "Writing"
case production = "Production"
case directing = "Directing" // ✅ 새 값 추가
}
✅ 2. unknown 케이스 추가 (모든 예상치 못한 값 처리)
🔥 새로운 값이 추가될 가능성이 크다면, unknown 케이스를 추가하면 안전
enum KnownForDepartment: String, Codable {
case acting = "Acting"
case writing = "Writing"
case production = "Production"
case directing = "Directing"
case unknown // ✅ 새로운 값이 들어오면 기본적으로 unknown 처리
init(from decoder: Decoder) throws {
let container = try decoder.singleValueContainer()
let value = try? container.decode(String.self)
self = KnownForDepartment(rawValue: value ?? "") ?? .unknown
}
}
'Project > MovieClip' 카테고리의 다른 글
셀 재사용으로 인한 이전 데이터 표시되는 문제 (0) | 2025.02.08 |
---|---|
상세페이지로 넘어가기 (문제 해결, 데이터 전달 방법 비교) (0) | 2025.02.08 |
테이블의 섹션 별로 다르게 UI 구성 (0) | 2025.02.07 |
영어 장르 이름을 한글로 표시하기 (0) | 2025.02.07 |
genre_ids 의 Int 타입의 배열에 맞는 genre 찾기 (0) | 2025.02.06 |