我有以下数据类,我尝试向其添加一个 AdditionalCharge 数组,但出现标题中指定的错误。
包含额外费用的 AdditionalCharge 类和 FundingRequest 类如下。
我不确定我做错了什么。
class AdditionalCharge{
var ItemDescription = ""
var ItemValue:String = ""
}
class FundingRequest: Codable {
let dispatcherName, loadReference, origin, destination: String
let userID: String, applicationID: String
let pickedUp, droppedOff: String
let driverFirstName, driverLastName: String
let grossTruckPay,fundingMethod, comments: String
let advancesTaken: Bool
let rateConfirmation, billOfLading, lumperReceipt: [String]
let salesTicket: [String]
let debtorID: String
let additionalCharges = [AdditionalCharge]()
enum CodingKeys: String, CodingKey {
case dispatcherName = "DispatcherName"
case loadReference = "LoadReference"
case origin = "Origin"
case destination = "Destination"
case userID = "UserID"
case applicationID = "ApplicationID"
case pickedUp = "PickedUp"
case droppedOff = "DroppedOff"
case driverFirstName = "DriverFirstName"
case driverLastName = "DriverLastName"
case grossTruckPay = "GrossTruckPay"
case advancesTaken = "AdvancesTaken"
case fundingMethod = "FundingMethod"
case comments = "Comments"
case additionalCharges = "AdditionalCharges"
case rateConfirmation = "RateConfirmation"
case billOfLading = "BillOfLading"
case lumperReceipt = "LumperReceipt"
case salesTicket = "SalesTicket"
case debtorID = "DebtorID"
}
init(dispatcherName: String, loadReference: String, origin: String, destination: String, userID: String,applicationID: String, pickedUp: String, droppedOff: String, driverFirstName: String, driverLastName: String, grossTruckPay: String, advancesTaken: Bool, fundingMethod: String, comments: String, additionalCharges: [AdditionalCharge], rateConfirmation: [String], billOfLading: [String], lumperReceipt: [String], salesTicket: [String], debtorID:String) {
self.dispatcherName = dispatcherName
self.loadReference = loadReference
self.origin = origin
self.destination = destination
self.userID = userID
self.pickedUp = pickedUp
self.droppedOff = droppedOff
self.driverFirstName = driverFirstName
self.driverLastName = driverLastName
self.grossTruckPay = grossTruckPay
self.advancesTaken = advancesTaken
self.fundingMethod = fundingMethod
self.comments = comments
self.additionalCharges = additionalCharges
self.rateConfirmation = rateConfirmation
self.billOfLading = billOfLading
self.lumperReceipt = lumperReceipt
self.salesTicket = salesTicket
self.debtorID = debtorID
self.applicationID = applicationID
}
最佳答案
Codable
类型中的每个属性也必须是Codable
。
The simplest way to make a type codable is to declare its properties using types that are already Codable.
Built-in Codable types — String, Int, Double, Data, URL Array,
Dictionary, Optional are Codable if they contain Codable types
因此,AdditionalCharge
也必须是 Codable
才能使 FundingRequest
成为 Codable
。
class AdditionalCharge: Codable {
var ItemDescription = ""
var ItemValue:String = ""
}
关于swift - 类型不符合协议(protocol) 'Decodable'/'Encodable',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56807869/