如何将具有类名称的字符串转换为类类型本身?
为了在日志文件中存储类名,我将类类型的描述转换为字符串:
let objectType: NSObject.Type = Object.self
let str = String(describing: objectType)
但是,我没有成功将str
转换为类型为NSObject.Type
的变量以在泛型方法中使用它。
我怎么能这样做?
你可以从string
取回你的类,但是你需要在获取类名时使用你的项目的模块名。 如果你不使用你的模块名称,那么它将返回nil
因为你之前引用的类名称没有完全由模块名称限定。 您应该更改类名称字符串以表示您的类的完全限定名称:
let myClassString = String(MyModule.MyViewController.self)
print(myClassString)
let myClass = NSClassFromString("MyModule.(myClassString)") as! MyViewController.Type
print(myClass)
我只是简单地创建了一个扩展来使用任何对象:
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方法用类名输出模块名称。 然后,您必须将该字符串转换为其各自的对象类型。
也许是这样的:
let objectType: NSObject.Type = NSObject.self
let str = String(objectType) // str = "NSObject"
let aClass = NSClassFromString(str) as! NSObject.Type // aClass = NSObject.Type
链接地址: http://www.djcxy.com/p/36291.html
上一篇: How to convert a string with the name of a class to the class type itself?