swiftでクラス名からインスタンスを生成する方法
swiftに関して質問です。
自作したクラスのインスタンスを生成する方法として、通常は下記のように生成できます。
let vc = HogeViewController()
ここで、自作したクラスをHogeViewControllerとした時、これを文字列(String型)から生成する場合にどうすればいいかわかりません。どなたかご教授頂けないでしょうか。
下記は理想なのですが、エラーになります。
let strVC:String = "HogeViewController"
let cls:AnyClass = NSClassFromString(strVC)
let vc:AnyObject = cls() // この行でエラー
※エラー文
‘AnyObject’ cannot be constructed because it has no accessible initializers
実際に使用する場合にはクラス名の文字列は固定値ではなく、動的に変化する予定です。
よって、特定の自作クラスでキャストすることは想定していません。
コンストラクタはデフォルトを想定しています。
なお、Objective-Cの場合は下記でできます。
NSString* strVC = @"HogeViewController";
Class cls = NSClassFromString(strVC);
id vc = [[cls alloc] init];
よろしくお願いいたします。