Class Swift-从类的类型初始化实例

Class Swift-从类的类型初始化实例,class,swift,initialization,Class,Swift,Initialization,我面临一个关于将objC代码移植到Swift的问题 我试图做的是从类类型中分配和初始化一个对象 这就是我在ObjC中的工作方式 -(id)getExistingVCFromClass:(Class)classVC { return ([dict objectForKey: NSStringFromClass([classVC class])]); } -(void)storeExistingVCForClass:(id)referenceToVC ForClass:(Class)cl

我面临一个关于将objC代码移植到Swift的问题

我试图做的是从类类型中分配和初始化一个对象

这就是我在ObjC中的工作方式

-(id)getExistingVCFromClass:(Class)classVC
{
    return ([dict objectForKey: NSStringFromClass([classVC class])]);
}


-(void)storeExistingVCForClass:(id)referenceToVC ForClass:(Class)classVC
{
    [dict setObject:referenceToVC forKey:NSStringFromClass([classVC class])];
}

-(void)retrieveObject:(Class)classVC
{

        //check if we have a previous one
        id existingVC;

        if ((existingVC = [self getExistingVCFromClass:classVC]))
        {
           //i retrieved some object matching the class
        }
        else
        {
          // found nothing -> init a new instance
            id newVC= [[classVC alloc] init];
            [storeExistingVCForClass: newVC ForClass:classVC];
        }
}
这在ObjC中工作得很好

现在,在Swift中,我有以下内容:

func getExistingVCFromClass(type:AnyClass) -> AnyObject?
    {
        return (dict?.objectForKey(NSStringFromClass(type)));
    }

func storeExistingVCForClass(object:AnyObject, type:AnyClass)
    {
        dict?.setObject(object, forKey: NSStringFromClass(type));
    }

func retrieveObject(type:AnyClass)
    {
        var myObj:AnyObject?;

        myObj = self.getExistingVCFromClass(type);


        if (myObj == nil)
        {
           // not found -> init , but i dont know how!!
            let newObject:AnyObject = type(); -> not compiling
            let newObject:AnyObject = type.new(); -> not compiling
        }

    }
如果我提供类,我找不到如何初始化我的新实例。如何在Swift中解决此问题

此外,在objC中,我不必向init发送任何参数,因为.xib文件是由viewcontroller自动加载的

在Swift中,它似乎不会自动加载.xib文件,因此我将这些初始化添加到所有ViewController中

 required init(coder aDecoder: NSCoder)
    {
        super.init(coder: aDecoder)
    }

    override init(nibName nibNameOrNil: String!, bundle nibBundleOrNil: NSBundle!)
    {
        super.init(nibName: nibNameOrNil, bundle: nil)
    }
我必须像这样实例化我的viewcontroller,并在参数中输入nib文件名:

let myVC = MyViewController(nibName: "MyViewController", bundle: nil);
所以我需要

1从匿名类实例化 2.给它一些参数 任何关于如何实现这一点的提示都将不胜感激


Thx.

这就是您要找的:?