Error

[iOS / Error] Expected to decode Double but found a string/data instead 에러 해결

Minny27 2021. 11. 1. 12:40

서버와의 통신을 통해서 데이터를 디코딩할 때 해당 에러가 발생했습니다.

찾아보니 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

 

결과 화면입니다.

 

 

 

※ 참고 출처

jinnify

 

[Swift] Codable - Decoding 방법

이전 포스트는 Codable의 Encodable에 대해 알아 보았습니다. 이번 포스트는 Codable의 Decodable에 대해 알아보도록 하겠습니다. Decodable JSON 데이터를 디코딩 하는 방법에 대해 알아보도록 하겠습니다. De

jinnify.tistory.com