Swift类自省和泛型
我正在尝试class
使用泛型动态创建基于实例的类型,但是在类自省时遇到了困难。
这里是问题:
- 有一个Swift相当于Obj-C的
self.class
吗? - 有没有办法使用
AnyClass
from 的结果实例化一个类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