2014-09-30 34 views
0

的静态方法在我的应用程序中,我得到了一个名为A的类。我有两个类(BC),从这个类继承。执行类型

Controller类有一个方法class func D(includeStored: Bool, completion: (results: [Controller]) -> Void)

这是一个关于Controller类的静态方法,我的2个子类可以用覆盖这个方法,但是它并不确定。

我想创建一个类型的他们我的2子类数组,像这样:

var myTypes = [ B.self, C.self ]

话,我想在这些类型的执行功能A,但我我无法完成这件事。

我曾尝试:

for item in myTypes { 
    (item as A.self).D(false, completion: { (results) -> Void in 
    }); 
} 

这是行不通的。也没有演员它(显然)不起作用,因为那么它是一个AnyObject。因为它不是一个对象,但是我想使用的类不能正常投射。

也试过这个,但是这个崩溃,因为它试图实例化类型,但它也是一个NSManagedObject,所以它不能通过这种方式实例化(item())。

var myTypes: [A.Type] = [ B.self, C.self ]; 

for item in controllerClasses { 
    var i = item(); 
    i.dynamicType.D(false, completion: { (results) -> Void in 
     NSLog("Found: \(results.count)"); 
    }); 
} 

任何关于如何让这个工作的指针?

回答

0

好的,这比我想象的要容易。在我指定myTypes阵列上的类型后,我可以轻松地遍历它们。因为它是类中的一个静态方法,所以我不需要实例化它,我可以直接使用它。

var myTypes: [A.Type] = [ B.self, C.self ]; 

for item in myTypes { 
    item.D(false, completion: { (results) -> Void in 
    }); 
} 

将它作为答案发布,因此对于任何需要它的人都知道它已被解决。