在类型上执行静态方法

时间:2014-09-30 18:16:16

标签: swift

在我的应用程序中,我得到了一个名为A的类。我有2个类(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)");
    });
}

有关如何使其工作的任何指示?

1 个答案:

答案 0 :(得分:0)

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

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

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

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