一尘不染

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

swift

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

let objectType: NSObject.Type = Object.self
let str = String(describing: objectType)

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

我该怎么办?


阅读 280

收藏
2020-07-07

共1个答案

一尘不染

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

let myClassString = String(MyModule.MyViewController.self)
print(myClassString)
let myClass = NSClassFromString("MyModule.\(myClassString)") as! MyViewController.Type
print(myClass)
2020-07-07