Как я могу добавить данные вручную в структуру массива Codable? - PullRequest
0 голосов
/ 17 апреля 2019

Я хочу добавить ручные данные к моему объекту структуры, который является массивом.

Я хочу добавить наконец имя категории "ВСЕ" в массиве.

struct CategoryNameList : Codable {

    let categoryID : Int?
    var categoryImageURL : String?
    var categoryName : String?
    var isSelected : Bool?

    enum CodingKeys: String, CodingKey {
        case categoryID = "CategoryID"
        case categoryImageURL = "CategoryImageURL"
        case categoryName = "CategoryName"
        case isSelected = "isSelected"
    }

    init(from decoder: Decoder) throws {
        let values = try decoder.container(keyedBy: CodingKeys.self)
        categoryID = try values.decodeIfPresent(Int.self, forKey: .categoryID)
        categoryImageURL = try values.decodeIfPresent(String.self, forKey: .categoryImageURL)
        categoryName = try values.decodeIfPresent(String.self, forKey: .categoryName)
        isSelected = try values.decodeIfPresent(Bool.self, forKey: .isSelected)
    }

}

1 Ответ

0 голосов
/ 17 апреля 2019

Вы можете создать специальный init для этого и использовать при создании вашего экземпляра вручную, добавить этот метод init в вашу текущую структуру CategoryNameList

struct CategoryNameList : Codable {
   //existing stuff

    init(categoryName: String) {
        self.categoryID = nil
        self.categoryName = categoryName    
    }
}

let all = CategoryNameList(categoryName: "All")
categoryNameArray.append(all)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...