Ios NSClassFromString在展开可选值时发现nil

Ios NSClassFromString在展开可选值时发现nil,ios,swift,runtime-error,xcode6,Ios,Swift,Runtime Error,Xcode6,我已经在视图上创建了一些继承,我想尝试在抽象视图类上处理一种根据视图类的动态名称创建viewController的方法。以下是我的工作: let className = NSObject.getClassNameFromDynamicType(self) var viewControllerName = NSString(format: "%@ViewController", className) // Create view controller from widge

我已经在视图上创建了一些继承,我想尝试在抽象视图类上处理一种根据视图类的动态名称创建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,并且具有正确的值。
我遗漏了什么?

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


如果你不确定你的模块名是什么,我发现打开任何情节提要、选择任何视图控制器并查看Identity Inspector(它是第二个字段)都很容易阅读它。

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


如果你不确定你的模块名是什么,我发现打开任何情节提要、选择任何视图控制器并查看Identity Inspector(它是第二个字段)都很容易阅读它。

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


如果你不确定你的模块名是什么,我发现打开任何情节提要、选择任何视图控制器并查看Identity Inspector(它是第二个字段)都很容易阅读它。

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


如果你不确定你的模块名是什么,我发现打开任何情节提要、选择任何视图控制器并查看Identity Inspector(第二个字段)都很容易阅读。

谢谢!如果这是为了集成而设计的(可能以后作为cocoaPod),那么在这种情况下modulename会是什么呢?MyPodName.ViewController或userproject.ViewController?从未尝试过,但我确信它是在其中定义的模块。模块名类似于java和C中的名称空间,将来可能对某些人有用:它来自于我的getClassNameFromDynamicType,我在返回它之前将它删除了,谢谢!如果这是为了集成而设计的(可能以后作为cocoaPod),那么在这种情况下modulename会是什么呢?MyPodName.ViewController或userproject.ViewController?从未尝试过,但我确信它是在其中定义的模块。模块名类似于java和C中的名称空间,将来可能对某些人有用:它来自于我的getClassNameFromDynamicType,我在返回它之前将它删除了,谢谢!如果这是为了集成而设计的(可能以后作为cocoaPod),那么在这种情况下modulename会是什么呢?MyPodName.ViewController或userproject.ViewController?从未尝试过,但我确信它是在其中定义的模块。模块名类似于java和C中的名称空间,将来可能对某些人有用:它来自于我的getClassNameFromDynamicType,我在返回它之前将它删除了,谢谢!如果这是为了集成而设计的(可能以后作为cocoaPod),那么在这种情况下modulename会是什么呢?MyPodName.ViewController或userproject.ViewController?从未尝试过,但我确信它是在其中定义的模块。模块名类似于java和C中的名称空间#将来可能对某些人有用:它来自我的GetClassName from DynamicType,我在返回它之前将其删除
AnyObject。Type
也称为
AnyClass
也称为
AnyClass
也是称为
AnyClass
AnyObject.Type
也称为
AnyClass