Мне нужно передать модели типа decodable и получить доступ к заголовку и субтитрам из него, так как Decodable не имеет свойств заголовка и субтитров. Я реализовал расширение для decodable и добавил свойства заголовка и субтитров в Decodable. Так что любой объект типа Decodableмог написать decodableObject.title, поэтому, когда я передаю объект, который соответствует decodable и содержит свойства заголовка и субтитров, мне нужно получить доступ к данным этого объекта, а не к данным объекта Docodable, но что случится, если он просто получит доступ к свойствам расширения Decodable, чтобы получить доступ к моему целевому объекту?Я должен сделать downcasting к этому классу, который затем я должен написать реализацию для каждого типа модели
//decalring struct which conforms to Decodable
struct TestModel:Decodable {
var title:String?
}
//added property
extension Decodable {
var title:String?{
return "Decodable base"
}
}
func setup(){
var testModel = TestModel()
testModel.title = "Subclass"
checkProperties(model: testModel, mod: TestModel.self)
}
func checkProperties<T:Decodable>(model:Any,mod:T.Type){
typealias MMM = T
let title = (model as! MMM).title
print("type is \(title)")
}
// the resutl will be "Type is Decodable Base"
Мне нужно, чтобы ожидаемый результат был // результат будет "Тип подкласса"