我正在尝试使用泛型动态创建基于class
实例的类型,但是我遇到了类自省(introspection)的困难。
这里是问题:
self.class
等效的Swift? AnyClass
的NSClassFromString
结果实例化类? AnyClass
中获取T
或以其他方式键入信息? (类似于C#的typeof(T)
语法)最佳答案
好吧,其中之一是,Swift的[NSString class]
等效项是.self
(请参阅Metatype docs,尽管它们很薄)。
实际上,NSString.class
甚至不起作用!您必须使用NSString.self
。
let s = NSString.self
var str = s()
str = "asdf"
同样,我尝试了快速类
class MyClass {
}
let MyClassRef = MyClass.self
// ERROR :(
let my_obj = MyClassRef()
嗯...错误说:
我花了一段时间才弄清楚这意味着什么……事实证明它希望该类具有
@required init()
class X {
func me() {
println("asdf")
}
required init () {
}
}
let Y = X.self
// prints "asdf"
Y().me()
一些文档将其称为
.Type
,但是MyClass.Type
在操场上给了我一个错误。关于introspection - Swift类自省(introspection)和泛型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24049673/