不符合协议可解码/可编码

问题描述 投票:12回答:1

我正在使用以下结构:

struct Item : Codable {

    var category:String
    var birthDate:Date
    var switch:Bool
    var weightNew: [Weight]
    var weightOld: Array<Double>
    var createdAt:Date
    var itemIdentifier:UUID
    var completed:Bool

    func saveItem() {
        DataManager.save(self, with: itemIdentifier.uuidString)
    }

    func deleteItem() { DataManager.delete(itemIdentifier.uuidString)
    }

    mutating func markAsCompleted() {
        self.completed = true
        DataManager.save(self, with: itemIdentifier.uuidString)
    }

}

而对于重量:

struct Weight {
    var day:Int
    var weight:Double
    var type:Bool
}

将weightOld改为weightNew后,我得到两个错误: - Type'Item'不符合协议'Decodable' - Type'Item'不符合协议'Codable'

如果我遗漏'var weightNew:[Weight]'就可以了。不知道发生了什么以及如何解决它...帮助表示赞赏。

swift swift4
1个回答
19
投票

一切都需要是可编码的。到目前为止,你的Weight结构不是Codable。将Weight更新为Codable,然后Item将为Codable。

© www.soinside.com 2019 - 2024. All rights reserved.