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

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

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?

下一篇: What is the strict aliasing rule?