我试图动态创建一个基于类实例类型使用泛型,但我遇到类内省的困难。
这里有问题:
>是否有一个Swift相当于Obj-C的self.class?
>有没有办法实例化一个类使用来自NSClassFromString的AnyClass结果?
>有没有办法获得AnyClass或者严格从一个通用参数T类型信息? (类似于C#的typeof(T)语法)
好吧,一个,Swift等效的[NSString类]是.self(见
Metatype docs,虽然他们很瘦)。
原文链接:https://www.f2er.com/swift/321662.html事实上,NSString.class甚至不工作!你必须使用NSString.self。
let s = NSString.self var str = s() str = "asdf"
类似地,使用swift类我试过…
class MyClass { } let MyClassRef = MyClass.self // ERROR :( let my_obj = MyClassRef()
嗯…错误说:
Playground execution Failed: error: :16:1: error: constructing an object of class type ‘X’ with a Metatype value requires an ‘@required’ initializer
06002
我花了一段时间来弄清楚这是什么意思…结果,它想让类有一个@required init()
class X { func me() { println("asdf") } required init () { } } let Y = X.self // prints "asdf" Y().me()
一些文档将此称为.Type,但MyClass.Type在操作中给我一个错误。