Есть базовый класс BaseBuilding и несколько дочерних: Gallery, Tower, Shop
создаем массив
var arr = [BaseBuilding]()
и наполняем его элементами дочерних типов.
если сделаем
print(arr)
, то получаем:
[SomeName.Gallery, SomeName.Shop, SomeName.Tower, SomeName.Shop]
type(of: arr[2])
выдаёт правильный тип элемента - Tower
Но чтобы обратиться к свойствам этого элемента - нужно сначала сделать приведение типов.
let towerHeight = (arr[2] as! Tower).height
Как сделать так, чтобы можно было напрямую достучаться до свойств дочерних классов?
чтобы работала конструкция типа
let towerHeight = arr[2].height
Подозреваю, что нужен extension для array, но как именно выцепить тип элемента массива?