서버와의 통신을 통해서 데이터를 디코딩할 때 해당 에러가 발생했습니다.
찾아보니 Date 타입을 디코딩할 때 생기는 에러였습니다.
해당 에러를 해결해보겠습니다.
간단한 예시로 설명하겠습니다.
struct MovieData: Codable {
var movie: [Movie]
}
struct Movie: Codable {
var typeNumber: Int
var startTime: Date
var type: String
var name: String
}
var json = """
{
"movie": [
{
"typeNumber": 1,
"startTime": "2021-11-01T14:00:00Z",
"type": "해외",
"name": "듄"
},
{
"typeNumber" : 2,
"startTime": "2021-11-01T12:00:00Z",
"type" : "국내",
"name" : "보이스"
}
]
}
""".data(using: .utf8)!
...
let decoder = JSONDecoder()
decoder.dateDecodingStrategy = .iso8601
let movie = try! decoder.decode(MovieData.self, from: self.json)
print(movie)
Date 타입의 값을 별도의 디코딩을 해주지 않으면 Double로 디코딩하기 때문에 데이터 표준에 따라서
다음의 코드를 추가해줍니다.
decoder.dateDecodingStrategy = .iso8601
결과 화면입니다.