如何将一个string的类名转换为类的types本身?

为了在日志文件中存储类名,我将类types的描述转换为string:

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

但是,我没有成功地将str转换回types为NSObject.Type的variables,以便在generics方法中使用它。

我怎么能这样做?

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

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

我只是简单地创build了一个扩展来使用任何对象:

 extension NSObject { // Save Name of Object with this method func className() -> String { return NSStringFromClass(self.classForCoder) } // Convert String to object Type class func objectFromString(string: String) -> AnyObject? { return NSClassFromString(string) } } 

classForCoder方法用类名输出模块名称。 然后,您必须将该string转换回其各自的对象types。

也许是这样的:

 let objectType: NSObject.Type = NSObject.self let str = String(objectType) // str = "NSObject" let aClass = NSClassFromString(str) as! NSObject.Type // aClass = NSObject.Type 
Interesting Posts