Если у меня есть универсальная c функция, для которой установлен тип протокола, такой как
func decodeDecodable<DataModel: Decodable>(ofType dataModelType: DataModel.Type, from data: Data) throws -> DataModel {
return try JSONDecoder().decode(dataModelType, from: data)
}
, как я могу вызвать ее из универсального c типа, который может или может соответствовать к протоколу?
// The generic DataModel can be anything
func decode<DataModel>(ofType dataModelType: DataModel.Type, from data: Data) throws -> DataModel {
if let decodableType = dataModelType as? Decodable { // <--- what would this be?
return try decodeDecodable(ofType: decodableType, from: data)
} else {
...
}
}