爲了存儲在日誌文件中的類名我轉換類類型的描述字符串:如何將帶有類名的字符串轉換爲類類型本身?
let objectType: NSObject.Type = Object.self
let str = String(describing: objectType)
不過,我並不在str
迴轉化爲NSObject.Type
類型的一個變量成功以通用方法使用它。
我該怎麼做?
爲了存儲在日誌文件中的類名我轉換類類型的描述字符串:如何將帶有類名的字符串轉換爲類類型本身?
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)
確實,模塊名稱是缺少的部分! – Taco
也許是這樣的:
let objectType: NSObject.Type = NSObject.self
let str = String(objectType) // str = "NSObject"
let aClass = NSClassFromString(str) as! NSObject.Type // aClass = NSObject.Type
我只是創造了一個擴展到任何物體上使用:
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打印出與類名的模塊名稱。然後,您必須將該字符串轉換爲其各自的對象類型。
您想創建類型的實例嗎?我不確定在不同類型的初始化器需求不同的情況下,這是如何工作的。好奇,如果有人知道一種方式來做到這一點。 –