Conversión rápida de NSClassFromString

Al usar NSClassFromString para convertir de una cadena a un objeto en Swift, se informó un error de segmentación: 11.

let ctrlClass: AnyClass = NSClassFromString("HomeViewController")!
let ctrl: UIViewController = ctrlClass.init() as UIViewController

Forma correcta de escribir:

let bundleName = Bundle.main.object(forInfoDictionaryKey: "CFBundleName") as? String
let ctrlClass = NSClassFromString(bundleName+".HomeViewController") as! UIViewController.Type;
let ctrl: UIViewController = ctrlClass.init()

El parámetro de NSClassFromString en Swift no es solo un nombre de clase, sino una cadena compuesta por un nombre de paquete completo y un nombre de clase; de ​​lo contrario, se informará un error:

Hilo 1: Error fatal: inesperadamente se encontró cero al desenvolver un valor opcional

 
 

Supongo que te gusta

Origin blog.csdn.net/watson2017/article/details/132581852
Recomendado
Clasificación