在展开Optional值时,NSClassFromString找到了nil

时间:2014-10-01 14:19:05

标签: ios swift runtime-error xcode6

我在视图上创建了一些继承,我想尝试在抽象视图类上处理根据视图类的动态名称创建viewController的方法。这是我做的:

    let className = NSObject.getClassNameFromDynamicType(self)
    var viewControllerName = NSString(format: "%@ViewController", className)

    // Create view controller from widgetType
    var anyobjectype :AnyObject.Type =  NSClassFromString(viewControllerName)
    var nsobjectype : UIViewController.Type = anyobjectype as UIViewController.Type

和getClassNameFromDynamicType方法:

class func getClassNameFromDynamicType(thing:AnyObject) -> String {
    var complexClassName = NSStringFromClass(thing.dynamicType)
    return complexClassName.componentsSeparatedByString(".").last!
}

此方法返回正确的字符串:" MyCustomViewController" 但我得到了一个

fatal error: unexpectedly found nil while unwrapping an Optional value

致电

var anyobjectype :AnyObject.Type =  NSClassFromString(viewControllerName)

调试器告诉我viewcontrollerName不是nil并且具有正确的值。 我错过了什么?

1 个答案:

答案 0 :(得分:3)

我很确定你必须在类名前加上模块名称。因此,如果您的模块被调用MyProject并且您要实例化的类是MyViewController,那么您应该使用MyProject.MyViewController

如果您不确定您的模块名称是什么,我会通过打开任何故事板,选择任何视图控制器并查看Identity Inspector(它是第二个字段)来轻松阅读它。