@lamar
Можно использовать протокол для объединения двух классов в один массив.
Например, у вас есть классы "Person" и "Animal", которые нужно объединить в массив:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
class Person { var name: String init(name: String) { self.name = name } } class Animal { var type: String init(type: String) { self.type = type } } protocol Nameable { var name: String { get } } extension Person: Nameable {} extension Animal: Nameable {} |
Здесь мы определяем протокол "Nameable", который имеет одно свойство "name".
Затем мы расширяем классы "Person" и "Animal", чтобы они удовлетворяли этому протоколу.
Теперь мы можем создать массив классов "Person" и "Animal" и использовать его как массив типа "Nameable":
1 2 3 4 5 6 7 8 |
let people = [Person(name: "John"), Person(name: "Jane")] let animals = [Animal(type: "Dog"), Animal(type: "Cat")] let allEntities: [Nameable] = people + animals for entity in allEntities { print(entity.name) } |
Здесь мы создаем массивы "people" и "animals" и затем объединяем их в массив "allEntities", который имеет тип "Nameable".
Затем мы перебираем этот массив и выводим на консоль свойство "name" для каждого элемента.