如何将具有类名称的字符串转换为类类型本身?

Tac*_*aco 9 generics metaprogramming metaclass ios swift

为了在日志文件中存储类名,我将类类型的描述转换为字符串:

let objectType: NSObject.Type = Object.self
let str = String(describing: objectType)
Run Code Online (Sandbox Code Playgroud)

但是,我没有成功地将其转换str为类型变量NSObject.Type以在泛型方法中使用它.

我怎么能这样做?

San*_*osh 5

您可以从 中取回您的类string,但是在获取类名时需要使用项目的模块名。如果您不使用您的模块名称,那么它将返回,nil因为您之前引用的类名称不是由模块名称完全限定的。您应该更改类名字符串以表示您的类的完全限定名称:

let myClassString = String(MyModule.MyViewController.self)
print(myClassString)
let myClass = NSClassFromString("MyModule.\(myClassString)") as! MyViewController.Type
print(myClass)
Run Code Online (Sandbox Code Playgroud)