Объявление переменной неизвестного типа, соответствующей протоколу? - PullRequest
0 голосов
/ 19 сентября 2019

Можно ли объявить переменную неизвестного конкретного типа, которая соответствует одному или нескольким протоколам?

class A: Codable {
    ...
}
class B: Codable {
    ...
}
class Serializer {
    static func serializeFromJSON<T>(type: T.Type, dict: [String:Any]) throws -> T where T: Decodable { ... }
    static func serializeToJSON<T>(_ value: T) throws -> Data where T: Encodable { ... }
}

let dict : [String:Any] = ["Someval":1] // or whatever junk data
let myObj : [???] // what goes here?
switch someval {
case a: myObj = Serializer.serializeFromJSON(type: ClassA.self, dict)
case b: myObj = Serializer.serializeFromJSON(type: ClassB.self, dict)
}
let JSONEncoder = Serializer.serializeToJSON(myObj)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...