如何将手动数据附加到struct Codable数组?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将手动数据附加到struct Codable数组?相关的知识,希望对你有一定的参考价值。

我想将手动数据附加到我的struct对象,这是一个Array。

我想在Array中添加“ALL”类别名称。

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)
    


答案

您可以为此创建一个特殊的init,并在创建手动实例时使用,将此init方法添加到当前的struct CategoryNameList

struct CategoryNameList : Codable 
   //existing stuff

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


let all = CategoryNameList(categoryName: "All")
categoryNameArray.append(all)

以上是关于如何将手动数据附加到struct Codable数组?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 swift 4 Codable 中手动解码数组?

将 Codable 保存到 UserDefaults 并匹配 NSCoding 的外观

Swift Codable:如何将***数据编码到嵌套容器中

Swift 5 从Model, Struct或Class转Dictionary

使用 Codable 投射到对象

Swift 使用Codable协议进行json转模型