Получить все вложенные типы типов в Swift (как ссылки на метатипы) - PullRequest
0 голосов
/ 06 мая 2019

У меня есть несколько вложенных классов в Swift, например:

class Animal {
    class Mammal {
        class Tiger {}
        class Wolf {}
    }
    class Bird {} 
}

Можно ли проанализировать эту иерархию для автоматического получения из нее массива метатипов, например, во время выполнения:

[
    Animal.self,
    Animal.Mammal.self,
    Animal.Mammal.Tiger.self,
    Animal.Mammal.Wolf.self,
    Animal.Bird.self,
]

Ответы [ 2 ]

0 голосов
/ 06 мая 2019

Я думаю, что вы можете использовать Зеркалирование для этого: https://developer.apple.com/documentation/swift/mirror

0 голосов
/ 06 мая 2019

Вы можете использовать тип (из:)

var arr = [Any]()

arr.append(Animal.Bird())
arr.append(Animal.Mammal.Tiger())
arr.append(Animal.Mammal.Tiger())
arr.append(Animal.Mammal.Wolf())

for animal in arr {
    print(type(of: animal.self))
}

Выход

Птица
Тигр
Тигр
Волк

...