swift あるクラスのサブクラスの一覧を出す方法について
swift初心者です。
class Animal {
// 動物名を返すメソッド
class func returnAnimalName() -> String {
fatalError(message: "このメソッドはオーバーライドされていません")
}
requied init() {
}
}
class Dog: Animal {
override class func returnAnimalName() -> String {
return "Dog"
}
}
class Cat: Animal {
override class func returnAnimalName() -> String {
return "Cat"
}
}
このようなコードで動物名の文字列("Dog"や"Cat"等)を使ってその動物名が指すAnimalのサブクラスのメタタイプを得たいです。
let animalDict = ["Dog": Dog.self, "Cat": Cat.self]
let dogType = animalDict["Dog"]
let dog = dogType.init()
let catType = animalDict["Cat"]
let cat = catType.init()
このように動物名を入れるとそれが指すメタタイプを返すDictionaryを作るという方法もあるのですが、このようにするとAnimalのサブクラスを追加した時にこのDictionaryにも追加する必要があるゆえ、追加し忘れた時のことを考えるとバグの元です。他に何かいい方法はないでしょうか。
swift4、xcode9.2です。