Swift类introspection & generics?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (13)

试图动态地创建一个class基于实例的类型使用泛型

提问于
用户回答回答于

事实上,NSString.class根本不管用!你必须用NSString.self

let s = NSString.self
var str = s()
str = "asdf"

同样的

class MyClass {

}

let MyClassRef = MyClass.self

// ERROR :(
let my_obj = MyClassRef()

或者尝试下:

class X {
    func me() {
        println("asdf")
    }

    required init () {

    }
}

let Y = X.self

// prints "asdf"
Y().me()

用户回答回答于

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语法来指定这些类的目标-C类名称

let aClass = NSClassFromString("Zork") as NSObject.Type
let anObject = aClass()
println(anObject) // "I am a Zork"

扫码关注云+社区