Загрузка данных JSON как объекта в SwiftUI


person user6539552    schedule 21.01.2021    source источник


Ответы (2)


Поскольку поля comment может не быть, вы должны сделать его необязательным типом:

struct Landmark: Hashable, Codable, Identifiable {
    var id: Int
    var name: String
    var park: String
    var state: String
    var description: String
    var isFavorite: Bool
    var isFeatured: Bool
    var comment: String? // example, added this field
}
person Jobert    schedule 21.01.2021
comment
Даже я сделал это необязательным, но если поля нет в JSON, приложение вылетает. - person user6539552; 21.01.2021
comment
Не могли бы вы поделиться подробностями сбоя в журналах консоли? - person Jobert; 21.01.2021

Если только некоторые свойства в вашей структуре включены в json, то правильный способ сообщить об этом кодировщику / декодеру, добавив перечисление CodingKey, которое содержит только свойства json, и либо сделать другие свойства необязательными, либо предоставить значение по умолчанию для их.

Поскольку я не знаю исходный json, я предположил в приведенном ниже примере, что 3 последних свойства не включены в json

struct Landmark: Hashable, Codable, Identifiable {
    var id: Int
    var name: String
    var park: String
    var state: String
    var description: String
    var isFavorite: Bool = false //use default value
    var isFeatured: Bool = false //use default value
    var comment: String? //make optional

    enum CodingKeys: String, CodingKey {
        case id
        case name
        case park
        case state
        case description
    }
}
person Joakim Danielson    schedule 21.01.2021