Нулевой объект не позволяет декодируемому JSON работать в swift - PullRequest
0 голосов
/ 20 февраля 2019

Есть ли способ обойти нулевые объекты таким образом, чтобы обеспечить работу декодируемого JSON?Я приложил образ JSON.

import UIKit

struct SearchResultData: Decodable  {
    let server_response_time: Int
    let data: [SearchResultType]
    let success: Bool
}

struct SearchResultType: Decodable  {
    let group: String
    let data: [Movie]
}

struct Movie: Decodable {
    let title: String
}

enter image description here

Я получаю эту ошибку при запуске приложения.

Не удалось декодировать JSON: keyNotFound (CodingKeys (stringValue: «title», intValue: nil), Swift.DecodingError.Context (codingPath: [CodingKeys (stringValue: «data», intValue: nil), _JSONKey (stringValue: «Index 2»), intValue: 2), CodingKeys (stringValue: "data", intValue: nil), _JSONKey (stringValue: "Index 0", intValue: 0)], debugDescription: "Нет значения, связанного с ключом CodingKeys (stringValue: \" title \", intValue: nil) (\" title \ ").", underError: nil))

Ответы [ 2 ]

0 голосов
/ 20 февраля 2019

Просто измените типы, которые могут иметь nils, на дополнительные в вашем structs

struct SearchResultData: Decodable  {
    let server_response_time: Int
    let data: [SearchResultType]
    let success: Bool
}

struct SearchResultType: Decodable  {
    let group: String
    let data: [Movie]
}

struct Movie: Decodable {
    let title: String? // this is nullable variable, 
}

debugDescription: "Нет значения, связанного с ключом CodingKeys (stringValue: \" title \ ", intValue:nil) (\ "title \"). ", underError: nil)) <- как написано в этой строке </p>

0 голосов
/ 20 февраля 2019

Это

: "Нет значения, связанного с ключом CodingKeys (stringValue: \" title \ ", intValue: nil) (\" title \ ").", UnderError: nil))

означает, что title равен nil в некоторых частях, поэтому сделайте его

let title: String?

Вам также может понадобиться

let data: [SearchResultType?]

в качестве клавиши dataтакже содержит некоторые нулевые значения

...