Swift类自省和泛型
我正在尝试class使用泛型动态创建基于实例的类型,但是在类自省时遇到了困难。
这里是问题:
- 有一个Swift相当于Obj-C的
self.class吗? - 有没有办法使用
AnyClassfrom 的结果实例化一个类NSClassFromString? - 有没有一种方法可以
AnyClass严格从通用参数获取信息或以其他方式键入信息T?(类似于C#的typeof(T)语法)
回答:
那么,对于一个,雨燕等同的[NSString class]IS
.self(见元类型的文档,但他们非常薄)。
实际上,NSString.class它甚至都不起作用!您必须使用NSString.self。
let s = NSString.selfvar str = s()
str = "asdf"
同样,我尝试了快速班…
class MyClass {}
let MyClassRef = MyClass.self
// ERROR :(
let my_obj = MyClassRef()
嗯…错误说:
游乐场执行失败:错误::16:1:错误:使用元类型值构造类类型为“ X”的对象需要使用“ @required”初始化程序
Y().me()^
<REPL>:3:7: note: selected implicit initializer with type '()'
class X {
^
我花了一段时间才弄清楚这意味着什么……事实证明它希望全班有一个 @required init()
class X { func me() {
println("asdf")
}
required init () {
}
}
let Y = X.self
// prints "asdf"
Y().me()
一些文档将其称为.Type,但是MyClass.Type在操场上给了我一个错误。
以上是 Swift类自省和泛型 的全部内容, 来源链接: utcz.com/qa/404654.html

