Ios 不符合可解码协议

Ios 不符合可解码协议,ios,swift,Ios,Swift,我有下面的代码,它代表一个曲棍球棒和一些关于它的信息。我有一个问题,棍子不符合可解码的。我知道结构中使用的每种类型都需要是可编码的,而且它们是可编码的。然而,由于某种原因,“var条件”行导致了我不确定如何修复的错误。谢谢大家! enum StickLocation: Int, Codable, Hashable, CaseIterable { case handle, mid, bottom } enum StickCondition: Int, Codable, Hashable,

我有下面的代码,它代表一个曲棍球棒和一些关于它的信息。我有一个问题,棍子不符合可解码的。我知道结构中使用的每种类型都需要是可编码的,而且它们是可编码的。然而,由于某种原因,“var条件”行导致了我不确定如何修复的错误。谢谢大家!

enum StickLocation: Int, Codable, Hashable, CaseIterable {
    case handle, mid, bottom
}

enum StickCondition: Int, Codable, Hashable, CaseIterable {
    case pristine, scuffed, damaged, broken
}

struct HockeyStick: Identifiable, Codable {
    var barcode: Int
    var brand: String
    var conditions: [StickLocation:(condition:StickCondition, note:String?)]    // Offending line
    var checkouts: [CheckoutInfo]
    var dateAdded: Date
    var dateRemoved: Date?

    // Conform to Identifiable.
    var id: Int {
        return self.barcode
    }

    // If the stick was never removed then its in service.
    var inService: Bool {
        return self.dateRemoved == nil
    }
}

条件
字典的值类型是
(StickCondition,String?
,它是一个元组。元组不可
解码
/
可编码
,您无法使它们符合协议,因此要解决此问题,我建议您创建一个新结构来替换元组,如下所示:

enum StickLocation:Int、可编码、可哈希、可大小写{
箱把手,中间,底部
}
enum StickCondition:Int、可编码、可哈希、可大小写{
箱子原始、磨损、损坏、破损
}
结构StickConditionWithNote:Codable,Hashable{
var条件:粘滞条件
注:字符串?
}
结构曲棍:可识别、可编码{
var条形码:Int
var品牌:字符串
var条件:[粘贴位置:粘贴条件带注释]
var签出:[CheckoutInfo]
var dateAdded:日期
var dateRemoved:日期?
//符合可识别的。
变量id:Int{
返回自助条形码
}
//如果斗杆从未拆下,则其仍在使用中。
var在役:布尔{
返回self.dateRemoved==nil
}
}