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.self

var 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

回到顶部