Не удается найти правильный способ вызова decode
метода с отраженным типом класса.Получена ambiguous reference
ошибка на нем.
class EntityTwo: Decodable {
var name: String = ""
}
class EntityOne: Decodable {
var value: String = ""
}
struct Entity: Decodable {
var entity: String
var payload: Any
enum CodingKeys: String, CodingKey {
case entity
case payload
}
init(from decoder: Decoder) throws {
let container = try decoder.container(keyedBy: CodingKeys.self)
entity = try container.decode(String.self, forKey: .entity)
let entityType = NSClassFromString("MyFramework." + entity) as! Decodable.Type
payload = try container.decode(entityType, forKey: .payload)
}
}
Получена проблема в:
payload = try container.decode(entityType, forKey: .payload) -> Ambiguous reference to member 'decode(_:forKey:)'
В фоновом режиме она использовалась для получения различных сущностей из сокета:
{
"entity": "EntityOne",
"payload": {
"value": "EntityOneValue"
}
}
{
"entity": "EntityTwo",
"payload": {
"name": "EntityTwoName"
}
}
public func websocketMessage(data: Data) {
let entity = JSONDecoder().decode(Entity.self, from: data)
...
}