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