可编码 [字符串:任意] 字典



在我的代码中,我有一个属性类型为[String: Any]的类。在实现Codable协议时,编译器显示错误,指出

Protocol type 'Any' cannot conform to 'Decodable' because only concrete types can conform to protocols

open class MMSDKNotification: Codable {
enum MMSDKNotificationKeys: String, CodingKey { // declaring our keys
case id = "id"
case message = "message"
case isRead = "isRead"
case creationTime = "creationTime"
}
public var id: Int = 0
public var message: [String: Any]?
public var isRead: Bool = false
public var creationTime: Int = 0
required public init(from decoder: Decoder) throws {
let container = try decoder.container(keyedBy: MMSDKNotificationKeys.self) // defining our (keyed) container
self.id = try container.decode(Int.self, forKey: .id)
// Here is the error:
// Protocol type 'Any' cannot conform to 'Decodable' because only concrete types can conform to protocols
self.message = try container.decode(String.self, forKey: .type)
self.isRead = try container.decode(Bool.self, forKey: .isRead)
self.creationTime = try container.decode(Int.self, forKey: .creationTime)
}
public func encode(to encoder: Encoder) throws {
var container = encoder.container(keyedBy: MMSDKNotificationKeys.self)
try container.encode(id, forKey: .id)
try container.encode(isRead, forKey: .isRead)
try container.encode(creationTime, forKey: .creationTime)
}
}

是否可以将Codable[String: Any]字典一起使用?

是否可以将 Codable 与 [String: Any] 字典一起使用?

不,你不能使用Codable,但你可以在新模型中制作这个字典。

取代

公共变量消息:[字符串:任何]?

公共变量消息:消息模型?

struct 消息模型:可编码 { }

是否可以将 Codable 与 [String: Any] 字典一起使用?

不,你不能使用Codable,你必须明确地编写应该符合Codable的类型,否则使用SwiftyJSON/JSON系列化

相关内容

  • 没有找到相关文章

最新更新