使用方法は次のとおりNSClassFromString
です。最終的に何をしようとしているのスーパークラスを知っている必要があります。以下に、自分自身を記述する方法を知っているスーパークラスとサブクラスのペアを示しますprintln
。
@objc(Zilk) class Zilk : NSObject {
override var description : String {return "I am a Zilk"}
}
@objc(Zork) class Zork : Zilk {
override var description : String {return "I am a Zork"}
}
特別な@obj
構文を使用して、これらのクラスのObjective-Cで変更された名前を指示していることに注意してください。それ以外の場合、各クラスを指定する変更された文字列がわからないため、これは重要です。
これでNSClassFromString
、ZorkクラスまたはZilkクラスを作成するために使用できます。これは、NSObjectとして入力でき、後でクラッシュしないことがわかっているためです。
let aClass = NSClassFromString("Zork") as NSObject.Type
let anObject = aClass()
println(anObject) // "I am a Zork"
そしてそれは可逆的です。println(NSStringFromClass(anObject.dynamicType))
も動作します。
最新バージョン:
if let aClass = NSClassFromString("Zork") as? NSObject.Type {
let anObject = aClass.init()
print(anObject) // "I am a Zork"
print(NSStringFromClass(type(of:anObject))) // Zork
}