Предположим, у меня есть протокол TestProtocol
и классы TestClass1
и TestClass2
, соответствующие TestProtocol
:
protocol TestProtocol: AnyObject { }
class TestClass1: TestProtocol { }
class TestClass2: TestProtocol { }
Предположим, что у меня есть массив метатипов, определенный как
var testArray: [TestProtocol.Type] = [TestClass1.self, TestClass2.self]
Как я могу создавать объекты экземпляров TestClass1
и TestClass2
на основе записей testArray
?
ps: Это должно быть сделано без создания конструкции switch, которая проверяет повторTestClass1.self
и TestClass2.self
как
var instanceArray: [TestProtocol] = []
for element in testArray {
if element == TestClass1.self {
instanceArray.append(TestClass1())
} else if element == TestClass2.self {
instanceArray.append(TestClass2())
}
}
Я посмотрел на дженерики, но не нашел подходящего решения, потому что метатипы хранятся в массиве типа [TestProtocol.Type]
.