API를 연동해서 데이터를 가져올 때, 데이터를 디코딩할 때 해당 에러가 발생했습니다.
찾아보니 데이터가 Dictionary 타입인데 Array 타입으로 디코딩할 때 생기는 문제였습니다.
해당 에러를 해결해보겠습니다.
간단한 예시로 설명하겠습니다.
struct MovieData: Codable {
var movie: [Movie]
}
struct Movie: Codable {
var typeNumber: Int
var type: String
var name: String
}
var json = """
{
"movie": [
{
"typeNumber": 1,
"type": "해외",
"name": "듄"
},
{
"typeNumber" : 2,
"type" : "국내",
"name" : "보이스"
}
]
}
""".data(using: .utf8)!
...
let decoder = JSONDecoder()
let movie = try! decoder.decode([MovieData].self, from: self.json)
print(movie)
영화 데이터를 가지고 있는 json 데이터를 디코딩할 때, "movie 데이터가 배열이네?"라고 생각하고
let movie = try! decoder.decode([MovieData].self, from: self.json)
위와 같이 작성하면 에러가 발생합니다. "movie" 키의 값이 배열이기 때문에
다음과 같이 작성하면 정상적으로 작동하는 것을 알 수 있습니다.
let movie = try! decoder.decode(MovieData.self, from: self.json)
(옵셔널 타입으로 하지 않은 이유는 에러를 확인하기 위해서 입니다.)
결과 화면입니다.
에러의 내용을 정확하게 해석해서 해결하려고 노력해야 한다는 것을 배웠습니다...