我想制作一个可编码的结构,以便可以将内容写入文件中
struct LocationDetails: Codable {
var locationId: String? = nil
var providerId: String? = nil
var locationDict = [String:Any]()
var providerDict = [String:Any]()
}
给出错误:类型“ LocationDetails”与协议“可解码”不符。
而不是字典,如果我使用Array并使用PropertyListEncoder和PropertyListDecoder对结构进行编码/解码,则可以正常工作。但甚至不允许我在可编码结构中定义字典如何用Dictionary Codable制作结构?
您可以按如下所示使用泛型来定义结构,以删除Any
类型并将字典value类型限制为符合Codable
的那些类型。
BTW:如果仅保存(不加载),则应使用Encodable
,而不是Codable
。
struct LocationDetails<Location: Codable, Provider: Codable>: Codable {
var locationId: String? = nil
var providerId: String? = nil
var locationDict = [String:Location]()
var providerDict = [String:Provider]()
}